]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/scsi/libsas/sas_scsi_host.c
[SCSI] libsas: fix deref before check in commit 70b25f890ce
[net-next-2.6.git] / drivers / scsi / libsas / sas_scsi_host.c
index 822835055cef3cc3c0fe9e9d9c6cbd2d7a17c4d4..53849f21ad4247d3edc66da875f1abd7f483a175 100644 (file)
@@ -1030,8 +1030,6 @@ int __sas_task_abort(struct sas_task *task)
 void sas_task_abort(struct sas_task *task)
 {
        struct scsi_cmnd *sc = task->uldd_task;
-       struct request_queue *q = sc->device->request_queue;
-       unsigned long flags;
 
        /* Escape for libsas internal commands */
        if (!sc) {
@@ -1043,13 +1041,15 @@ void sas_task_abort(struct sas_task *task)
 
        if (dev_is_sata(task->dev)) {
                sas_ata_task_abort(task);
-               return;
-       }
+       } else {
+               struct request_queue *q = sc->device->request_queue;
+               unsigned long flags;
 
-       spin_lock_irqsave(q->queue_lock, flags);
-       blk_abort_request(sc->request);
-       spin_unlock_irqrestore(q->queue_lock, flags);
-       scsi_schedule_eh(sc->device->host);
+               spin_lock_irqsave(q->queue_lock, flags);
+               blk_abort_request(sc->request);
+               spin_unlock_irqrestore(q->queue_lock, flags);
+               scsi_schedule_eh(sc->device->host);
+       }
 }
 
 int sas_slave_alloc(struct scsi_device *scsi_dev)