]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
[PATCH] Fix Fibre Channel boot oops
authorJames Bottomley <James.Bottomley@SteelEye.com>
Mon, 26 Dec 2005 15:58:49 +0000 (09:58 -0600)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 26 Dec 2005 18:17:43 +0000 (10:17 -0800)
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 <James.Bottomley@SteelEye.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/scsi/scsi_scan.c

index e36c21e06d31e7b40e2599992082f98492c72c9b..4e6709f448e198b6299204730c0771a03cf7a064 100644 (file)
@@ -418,8 +418,9 @@ static void scsi_target_reap_work(void *data) {
        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;