[SCSI] eliminate an unnecessary local variable from scsi_remove_target()
[pandora-kernel.git] / drivers / scsi / scsi_sysfs.c
index 20ad59d..4c68d36 100644 (file)
@@ -964,10 +964,11 @@ static void __scsi_remove_target(struct scsi_target *starget)
        list_for_each_entry(sdev, &shost->__devices, siblings) {
                if (sdev->channel != starget->channel ||
                    sdev->id != starget->id ||
-                   sdev->sdev_state == SDEV_DEL)
+                   scsi_device_get(sdev))
                        continue;
                spin_unlock_irqrestore(shost->host_lock, flags);
                scsi_remove_device(sdev);
+               scsi_device_put(sdev);
                spin_lock_irqsave(shost->host_lock, flags);
                goto restart;
        }
@@ -992,16 +993,14 @@ static int __remove_child (struct device * dev, void * data)
  */
 void scsi_remove_target(struct device *dev)
 {
-       struct device *rdev;
-
        if (scsi_is_target_device(dev)) {
                __scsi_remove_target(to_scsi_target(dev));
                return;
        }
 
-       rdev = get_device(dev);
+       get_device(dev);
        device_for_each_child(dev, NULL, __remove_child);
-       put_device(rdev);
+       put_device(dev);
 }
 EXPORT_SYMBOL(scsi_remove_target);