[PATCH] libata: fix ata_port_detach() for old EH ports
ata_prot_detach() did nothing for old EH ports and thus SCSI hosts associated with those ports are left dangling after they are detached leaving stale devices and causing oops eventually. Make ata_port_detach() remove SCSI hosts for old EH ports. Signed-off-by: Tejun Heo <htejun@gmail.com>
This commit is contained in:
parent
f1d39b291e
commit
c3cf30a989
|
@ -5558,7 +5558,7 @@ void ata_port_detach(struct ata_port *ap)
|
|||
int i;
|
||||
|
||||
if (!ap->ops->error_handler)
|
||||
return;
|
||||
goto skip_eh;
|
||||
|
||||
/* tell EH we're leaving & flush EH */
|
||||
spin_lock_irqsave(ap->lock, flags);
|
||||
|
@ -5594,6 +5594,7 @@ void ata_port_detach(struct ata_port *ap)
|
|||
cancel_delayed_work(&ap->hotplug_task);
|
||||
flush_workqueue(ata_aux_wq);
|
||||
|
||||
skip_eh:
|
||||
/* remove the associated SCSI host */
|
||||
scsi_remove_host(ap->host);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue