Fix Fibre Channel boot oops
PATCH 1/1 Fix Fibre Channel boot oops
The oops is characteristic of the underlying device being removed from visibility before the class device, and sure enough we do device_del() before transport_unregister() in the scsi_target_reap() routines. I've no idea why this is suddenly showing up, since the code has been in there since that function was first invented. However, I've confirmed this fixes Andrew Vasquez's boot oops.
Signed-off-by James Bottomley <[email protected]>
---
P.S. I told you if you waited a while I'd get another bug ...
James
drivers/scsi/scsi_scan.c +2 -1
@@ -418,8 +418,9 @@ static void scsi_target_reap_work(void *if (--starget->reap_ref ==0 &&list_empty (&starget->devices)) {list_del_init (&starget->siblings);spin_unlock_irqrestore (shost->host_lock, flags); +transport_remove_device (&starget->dev);device_del (&starget->dev); -transport_unregister_device (&starget->dev); +transport_destroy_device (&starget->dev);put_device (&starget->dev);return ;