提交 77c01976 编写于 作者: A Alan Stern 提交者: James Bottomley

[SCSI] fix /proc memory leak in the SCSI core

The SCSI core calls scsi_proc_hostdir_add() from within
scsi_host_alloc(), but the corresponding scsi_proc_hostdir_rm()
routine is called from within scsi_remove_host().  As a result, if a
host is allocated and then deallocated without ever being registered,
the host's directory in /proc is leaked.

This patch (as1181b) fixes this bug in the SCSI core by moving
scsi_proc_hostdir_rm() into scsi_host_dev_release().
Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
上级 058bb82c
...@@ -176,7 +176,6 @@ void scsi_remove_host(struct Scsi_Host *shost) ...@@ -176,7 +176,6 @@ void scsi_remove_host(struct Scsi_Host *shost)
transport_unregister_device(&shost->shost_gendev); transport_unregister_device(&shost->shost_gendev);
device_unregister(&shost->shost_dev); device_unregister(&shost->shost_dev);
device_del(&shost->shost_gendev); device_del(&shost->shost_gendev);
scsi_proc_hostdir_rm(shost->hostt);
} }
EXPORT_SYMBOL(scsi_remove_host); EXPORT_SYMBOL(scsi_remove_host);
...@@ -270,6 +269,8 @@ static void scsi_host_dev_release(struct device *dev) ...@@ -270,6 +269,8 @@ static void scsi_host_dev_release(struct device *dev)
struct Scsi_Host *shost = dev_to_shost(dev); struct Scsi_Host *shost = dev_to_shost(dev);
struct device *parent = dev->parent; struct device *parent = dev->parent;
scsi_proc_hostdir_rm(shost->hostt);
if (shost->ehandler) if (shost->ehandler)
kthread_stop(shost->ehandler); kthread_stop(shost->ehandler);
if (shost->work_q) if (shost->work_q)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册