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 (as1181) fixes this bug in the SCSI core by moving scsi_proc_hostdir_add() into scsi_host_add(). Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> --- Can somebody check to make sure this is compatible with legacy drivers using the non-hotplug API? Index: usb-2.6/drivers/scsi/hosts.c =================================================================== --- usb-2.6.orig/drivers/scsi/hosts.c +++ usb-2.6/drivers/scsi/hosts.c @@ -206,9 +206,10 @@ int scsi_add_host(struct Scsi_Host *shos if (error) goto fail; + scsi_proc_hostdir_add(shost->hostt); + if (!shost->shost_gendev.parent) shost->shost_gendev.parent = dev ? dev : &platform_bus; - error = device_add(&shost->shost_gendev); if (error) goto out; @@ -259,6 +260,7 @@ int scsi_add_host(struct Scsi_Host *shos out_del_gendev: device_del(&shost->shost_gendev); out: + scsi_proc_hostdir_rm(shost->hostt); scsi_destroy_command_freelist(shost); fail: return error; @@ -407,7 +409,6 @@ struct Scsi_Host *scsi_host_alloc(struct goto fail_kfree; } - scsi_proc_hostdir_add(shost->hostt); return shost; fail_kfree: -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html