Patch "Fix a memory leak in scsi_host_dev_release()" has been added to the 3.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
Fix a memory leak in scsi_host_dev_release()
to the 3.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
fix-a-memory-leak-in-scsi_host_dev_release.patch
and it can be found in the queue-3.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
b49493f99690c8eaacfbc635bafaad629ea2c036Mon Sep 17 00:00:00 2001
From: Bart Van Assche <[email protected]>
Date: Wed, 18 Nov 2015 14:56:36 -0800
Subject: Fix a memory leak in scsi_host_dev_release()
From: Bart Van Assche <[email protected]>
commit b49493f99690c8eaacfbc635bafaad629ea2c036 upstream.
Avoid that kmemleak reports the following memory leak if a SCSI LLD calls scsi_host_alloc() and scsi_host_put() but neither scsi_host_add() nor scsi_host_remove(). The following shell command triggers that scenario:
for ((i=0; i<2; i++)); do
srp_daemon -oac |
while read line; do
echo $line >/sys/class/infiniband_srp/srp-mlx4_0-1/add_target
done
done
unreferenced object 0xffff88021b24a220 (size 8):
comm "srp_daemon", pid 56421, jiffies 4295006762 (age 4240.750s) hex dump (first 8 bytes):
68 6f 73 74 35 38 00 a5 host58..
backtrace:
[<ffffffff8151014a>] kmemleak_alloc+0x7a/0xc0
[<ffffffff81165c1e>] __kmalloc_track_caller+0xfe/0x160
[<ffffffff81260d2b>] kvasprintf+0x5b/0x90
[<ffffffff81260e2d>] kvasprintf_const+0x8d/0xb0
[<ffffffff81254b0c>] kobject_set_name_vargs+0x3c/0xa0
[<ffffffff81337e3c>] dev_set_name+0x3c/0x40
[<ffffffff81355757>] scsi_host_alloc+0x327/0x4b0
[<ffffffffa03edc8e>] srp_create_target+0x4e/0x8a0 [ib_srp]
[<ffffffff8133778b>] dev_attr_store+0x1b/0x20
[<ffffffff811f27fa>] sysfs_kf_write+0x4a/0x60
[<ffffffff811f1e8e>] kernfs_fop_write+0x14e/0x180
[<ffffffff81176eef>] __vfs_write+0x2f/0xf0
[<ffffffff811771e4>] vfs_write+0xa4/0x100
[<ffffffff81177c64>] SyS_write+0x54/0xc0
[<ffffffff8151b257>] entry_SYSCALL_64_fastpath+0x12/0x6f--- drivers/scsi/hosts.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
drivers/scsi/hosts.c +11 -0
@@ -308,6 +308,17 @@ static void scsi_host_dev_release(structkfree (queuedata); } +if (shost->shost_state ==SHOST_CREATED ) { +/* +* Free the shost_dev device name here if scsi_host_alloc() +* and scsi_host_put() have been called but neither +* scsi_host_add() nor scsi_host_remove() has been called. +* This avoids that the memory allocated for the shost_dev +* name is leaked. +*/ +kfree (dev_name (&shost->shost_dev)); + } +scsi_destroy_command_freelist (shost);if (shost->bqt)blk_free_tags (shost->bqt);
Patches currently in stable-queue which might be from [email protected] are
queue-3.14/fix-a-memory-leak-in-scsi_host_dev_release.patch