--- 392d8db33905cbe31f1e2f96644552d9b692eb27 +++ ad136c2be5016d7bdd09387612c835d4edd10256 @@ -954,10 +954,11 @@ static void __scsi_remove_target(struct 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; }