Commit 9e70592f authored by James Bottomley's avatar James Bottomley Committed by James Bottomley

[SCSI] fix potential panic with proc on module removal

There's a problem in our host release in that it calls
scsi_proc_hostdir_rm(). However, if you hold a reference to the host as
you remove the module, the host template (which proc uses) will be freed
and the system will panic when the host device is finally released.

Fix this by moving scsi_proc_hostdir_rm() to where it should be: in
scsi_remove_host().
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 1640a2c3
...@@ -176,6 +176,7 @@ void scsi_remove_host(struct Scsi_Host *shost) ...@@ -176,6 +176,7 @@ void scsi_remove_host(struct Scsi_Host *shost)
transport_unregister_device(&shost->shost_gendev); transport_unregister_device(&shost->shost_gendev);
class_device_unregister(&shost->shost_classdev); class_device_unregister(&shost->shost_classdev);
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);
...@@ -262,7 +263,6 @@ static void scsi_host_dev_release(struct device *dev) ...@@ -262,7 +263,6 @@ static void scsi_host_dev_release(struct device *dev)
if (shost->work_q) if (shost->work_q)
destroy_workqueue(shost->work_q); destroy_workqueue(shost->work_q);
scsi_proc_hostdir_rm(shost->hostt);
scsi_destroy_command_freelist(shost); scsi_destroy_command_freelist(shost);
kfree(shost->shost_data); kfree(shost->shost_data);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment