kernel-ark/drivers/scsi
Jan Blunck 729d70f5df [PATCH] sg.c: fix a memory leak in devices seq_file implementation
I know that scsi procfs is legacy code but this is a fix for a memory leak.

While reading through sg.c I realized that the implementation of
/proc/scsi/sg/devices with seq_file is leaking memory due to freeing the
pointer returned by the next() iterator method.  Since next() might return
NULL or an error this is wrong.  This patch fixes it through using the
seq_files private field for holding the reference to the iterator object.

Here is a small bash script to trigger the leak. Use slabtop to watch
the size-32 usage grow and grow.

#!/bin/sh

while true; do
	cat /proc/scsi/sg/devices > /dev/null
done

Signed-off-by: Jan Blunck <j.blunck@tu-harburg.de>
Acked-by: James Bottomley <James.Bottomley@steeleye.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-08-27 11:22:27 -07:00
..
aacraid [PATCH] aacraid: Fix for controller load based timeouts 2005-08-01 21:37:59 -07:00
aic7xxx Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus-2.6 2005-08-04 13:08:29 -07:00
aic7xxx_old
arm [PATCH] Kconfig fix (acornscsi) 2005-08-23 18:43:42 -07:00
dpt [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
ibmvscsi [SCSI] scsi/ibmvscsi/srp.h: Fix a wrong type code used for SRP_LOGIN_REJ 2005-07-30 08:59:04 -05:00
lpfc [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
megaraid
pcmcia
qla2xxx [PATCH] More qla2xxx configuration fixes 2005-07-27 22:31:35 -07:00
sym53c8xx_2 [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
3w-9xxx.c
3w-9xxx.h
3w-xxxx.c
3w-xxxx.h
53c7xx_d.h_shipped
53c7xx_u.h_shipped
53c7xx.c
53c7xx.h
53c7xx.scr
53c700_d.h_shipped
53c700.c
53c700.h
53c700.scr
a100u2w.c
a100u2w.h
a2091.c
a2091.h
a3000.c
a3000.h
advansys.c
advansys.h
aha152x.c
aha152x.h
aha1542.c
aha1542.h
aha1740.c
aha1740.h
ahci.c libata: release prep (bump versions, etc.) 2005-08-23 02:53:51 -04:00
aic7xxx_old.c
amiga7xx.c
amiga7xx.h
ata_piix.c libata: release prep (bump versions, etc.) 2005-08-23 02:53:51 -04:00
atari_dma_emul.c
atari_NCR5380.c
atari_scsi.c
atari_scsi.h
atp870u.c
atp870u.h
blz1230.c
blz2060.c
BusLogic.c
BusLogic.h
bvme6000.c
bvme6000.h
ch.c
constants.c
cpqfcTS.h
cpqfcTSchip.h
cpqfcTScontrol.c
cpqfcTSi2c.c
cpqfcTSinit.c
cpqfcTSioctl.h
cpqfcTSstructs.h
cpqfcTStrigger.c
cpqfcTStrigger.h
cpqfcTSworker.c
cyberstorm.c
cyberstormII.c
dc395x.c Revert "dc395x: Fix support for highmem" 2005-08-14 15:43:39 -07:00
dc395x.h
dec_esp.c
dmx3191d.c
dpt_i2o.c [SCSI] dpt_i2o pci_request_regions fix 2005-08-09 12:09:53 -05:00
dpti.h
dtc.c [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
dtc.h [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
eata_generic.h
eata_pio.c
eata_pio.h
eata.c
esp.c
esp.h
fastlane.c
fcal.c
fcal.h
fd_mcs.c
fdomain.c [PATCH] clean up inline static vs static inline 2005-07-27 16:26:20 -07:00
fdomain.h
FlashPoint.c
g_NCR5380_mmio.c
g_NCR5380.c
g_NCR5380.h
gdth_ioctl.h
gdth_kcompat.h
gdth_proc.c
gdth_proc.h
gdth.c
gdth.h
gvp11.c
gvp11.h
hosts.c
hosts.h
ibmmca.c
ibmmca.h
ide-scsi.c
imm.c
imm.h
in2000.c
in2000.h
initio.c [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
initio.h
ipr.c
ipr.h
ips.c [SCSI] ServeRAID V7.12.02 2005-08-02 10:09:03 -05:00
ips.h [SCSI] ServeRAID V7.12.02 2005-08-02 10:09:03 -05:00
jazz_esp.c
Kconfig [PATCH] Kconfig fix (non-modular SCSI drivers) 2005-08-23 18:43:46 -07:00
lasi700.c
libata-core.c libata: release prep (bump versions, etc.) 2005-08-23 02:53:51 -04:00
libata-scsi.c libata: fix EH-related lockup by properly cleaning EH command list 2005-08-10 13:38:27 -04:00
libata.h libata: release prep (bump versions, etc.) 2005-08-23 02:53:51 -04:00
mac53c94.c
mac53c94.h
mac_esp.c
mac_scsi.c
mac_scsi.h
Makefile
mca_53c9x.c
megaraid.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus-2.6 2005-07-26 13:28:47 -07:00
megaraid.h
mesh.c
mesh.h
mvme16x.c
mvme16x.h
mvme147.c
mvme147.h
ncr53c8xx.c
ncr53c8xx.h
NCR53c406a.c [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
NCR53C9x.c
NCR53C9x.h
NCR5380.c
NCR5380.h
NCR_D700.c
NCR_D700.h
NCR_Q720.c
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c
nsp32.h
oktagon_esp.c
oktagon_io.S
osst_detect.h
osst_options.h
osst.c
osst.h
pas16.c [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
pas16.h
pci2000.h
pluto.c
pluto.h
ppa.c
ppa.h
psi240i.c
psi240i.h
psi_chip.h
ql1040_fw.h
ql1280_fw.h
ql12160_fw.h
qla1280.c
qla1280.h
qlogicfas408.c
qlogicfas408.h
qlogicfas.c
qlogicfc_asm.c
qlogicfc.c
qlogicisp_asm.c
qlogicisp.c
qlogicpti_asm.c
qlogicpti.c
qlogicpti.h
sata_nv.c
sata_promise.c libata: release prep (bump versions, etc.) 2005-08-23 02:53:51 -04:00
sata_promise.h
sata_qstor.c
sata_sil.c
sata_sis.c
sata_svw.c
sata_sx4.c [PATCH] sata: fix sata_sx4 dma_prep to not use sg->length 2005-08-10 13:34:58 -04:00
sata_uli.c
sata_via.c
sata_vsc.c
script_asm.pl
scsi_debug.c
scsi_debug.h
scsi_devinfo.c
scsi_error.c
scsi_ioctl.c
scsi_lib.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus-2.6 2005-07-26 13:28:47 -07:00
scsi_logging.h
scsi_module.c
scsi_priv.h
scsi_proc.c
scsi_scan.c [SCSI] fix target scanning oops with fc transport class 2005-08-08 17:14:55 -05:00
scsi_sysctl.c
scsi_sysfs.c
scsi_transport_fc.c [SCSI] fix target scanning oops with fc transport class 2005-08-08 17:14:55 -05:00
scsi_transport_iscsi.c
scsi_transport_spi.c
scsi_typedefs.h
scsi.c
scsi.h
scsicam.c
sd.c [SCSI] Redundant this_count check in sd_init_command() 2005-07-14 11:25:17 -04:00
seagate.c
seagate.h
sg.c [PATCH] sg.c: fix a memory leak in devices seq_file implementation 2005-08-27 11:22:27 -07:00
sgiwd93.c
sgiwd93.h
sim710.c
sr_ioctl.c
sr_vendor.c
sr.c
sr.h
st_options.h
st.c [SCSI] Fix SCSI tape oops at module removal 2005-08-02 10:14:36 -05:00
st.h
sun3_NCR5380.c
sun3_scsi_vme.c
sun3_scsi.c
sun3_scsi.h
sun3x_esp.c
sym53c8xx_comm.h
sym53c8xx_defs.h
sym53c416.c
sym53c416.h
t128.c
t128.h [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
tmscsim.c
tmscsim.h
u14-34f.c
ultrastor.c
ultrastor.h
wd33c93.c
wd33c93.h
wd7000.c
zalon.c