|
@@ -441,7 +441,15 @@ int scsi_dh_activate(struct request_queue *q, activate_complete fn, void *data)
|
|
|
|
|
|
spin_lock_irqsave(q->queue_lock, flags);
|
|
|
sdev = q->queuedata;
|
|
|
- if (sdev && sdev->scsi_dh_data)
|
|
|
+ if (!sdev) {
|
|
|
+ spin_unlock_irqrestore(q->queue_lock, flags);
|
|
|
+ err = SCSI_DH_NOSYS;
|
|
|
+ if (fn)
|
|
|
+ fn(data, err);
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (sdev->scsi_dh_data)
|
|
|
scsi_dh = sdev->scsi_dh_data->scsi_dh;
|
|
|
dev = get_device(&sdev->sdev_gendev);
|
|
|
if (!scsi_dh || !dev ||
|