<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">diff -up linux-2.6.18.i686/drivers/scsi/scsi_sysfs.c.orig linux-2.6.18.i686/drivers/scsi/scsi_sysfs.c
--- linux-2.6.18.i686/drivers/scsi/scsi_sysfs.c.orig	2011-05-17 09:39:02.000000000 +0800
+++ linux-2.6.18.i686/drivers/scsi/scsi_sysfs.c	2011-05-17 09:40:21.000000000 +0800
@@ -779,10 +779,11 @@ void __scsi_remove_target(struct scsi_ta
 	list_for_each_entry(sdev, &amp;shost-&gt;__devices, siblings) {
 		if (sdev-&gt;channel != starget-&gt;channel ||
 		    sdev-&gt;id != starget-&gt;id ||
-		    sdev-&gt;sdev_state == SDEV_DEL)
+		    scsi_device_get(sdev))
 			continue;
 		spin_unlock_irqrestore(shost-&gt;host_lock, flags);
 		scsi_remove_device(sdev);
+		scsi_device_put(sdev);
 		spin_lock_irqsave(shost-&gt;host_lock, flags);
 		goto restart;
 	}
</pre></body></html>