Re: [2.6.31] Memory leak in SCSI initialization?

From: Tetsuo Handa
Date: Tue Sep 22 2009 - 04:16:44 EST


Hello.

Xiaotian Feng wrote:
> Can this patch fix your leak?
>
> diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
> index c447838..b0d3984 100644
> --- a/drivers/scsi/scsi_scan.c
> +++ b/drivers/scsi/scsi_scan.c
> @@ -318,6 +318,7 @@ out_device_destroy:
> scsi_device_set_state(sdev, SDEV_DEL);
> transport_destroy_device(&sdev->sdev_gendev);
> put_device(&sdev->sdev_gendev);
> + put_device(&sdev->sdev_dev);
> out:
> if (display_failure_msg)
> printk(ALLOC_FAILURE_MSG, __func__);
> @@ -958,6 +959,7 @@ static inline void scsi_destroy_sdev(struct scsi_device *sdev)
> sdev->host->hostt->slave_destroy(sdev);
> transport_destroy_device(&sdev->sdev_gendev);
> put_device(&sdev->sdev_gendev);
> + put_device(&sdev->sdev_dev);
> }
>
> #ifdef CONFIG_SCSI_LOGGING

No. I got slab corruption message for 14 times after applying this patch.
Isn't this patch calling put_device(&sdev->sdev_dev); more than needed?

kmemleak: Kernel memory leak detector initialized
kmemleak: Automatic memory scanning thread started
Freeing unused kernel memory: 300k freed
input: ImPS/2 Generic Wheel Mouse as /class/input/input1
SCSI subsystem initialized
Fusion MPT base driver 3.04.10
Copyright (c) 1999-2008 LSI Corporation
Fusion MPT SPI Host driver 3.04.10
mptspi 0000:00:10.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
mptbase: ioc0: Initiating bringup
ioc0: LSI53C1030 B0: Capabilities={Initiator}
scsi0 : ioc0: LSI53C1030 B0, FwRev=00000000h, Ports=1, MaxQ=128, IRQ=17
scsi 0:0:0:0: Direct-Access VMware, VMware Virtual S 1.0 PQ: 0 ANSI: 2
target0:0:0: Beginning Domain Validation
target0:0:0: Domain Validation skipping write tests
target0:0:0: Ending Domain Validation
target0:0:0: FAST-40 WIDE SCSI 80.0 MB/s ST (25 ns, offset 127)
sd 0:0:0:0: [sda] 41943040 512-byte logical blocks: (21.4 GB/20.0 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Cache data unavailable
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Cache data unavailable
sd 0:0:0:0: [sda] Assuming drive cache: write through
sda:
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<(null)>](0x0)
000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
sda1
sd 0:0:0:0: [sda] Cache data unavailable
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Attached SCSI disk
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
Slab corruption: size-1024 start=deb62f48, len=1024
Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
Last user: [<c0486122>](kfree+0x49/0x50)
180: 6b 6b 6b 6b 6a 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
Single bit error detected. Probably bad RAM.
Run memtest86+ or a similar memory test tool.
Prev obj: start=deb62b30, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 62 6c 6f 63 6b 2f 73 64 61 00 41
010: 43 54 49 4f 4e 3d 61 64 64 00 44 45 56 50 41 54
Next obj: start=deb63360, len=1024
Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
Last user: [<c04efd04>](kobject_uevent_env+0x23b/0x35c)
000: 61 64 64 40 2f 63 6c 61 73 73 2f 73 63 73 69 5f
010: 64 65 76 69 63 65 2f 30 3a 30 3a 30 3a 30 00 41
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/