aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libsas/sas_ata.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/libsas/sas_ata.c')
-rw-r--r--drivers/scsi/libsas/sas_ata.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
index e15501170698..816ab97eb16d 100644
--- a/drivers/scsi/libsas/sas_ata.c
+++ b/drivers/scsi/libsas/sas_ata.c
@@ -394,11 +394,15 @@ int sas_ata_init_host_and_port(struct domain_device *found_dev,
394void sas_ata_task_abort(struct sas_task *task) 394void sas_ata_task_abort(struct sas_task *task)
395{ 395{
396 struct ata_queued_cmd *qc = task->uldd_task; 396 struct ata_queued_cmd *qc = task->uldd_task;
397 struct request_queue *q = qc->scsicmd->device->request_queue;
397 struct completion *waiting; 398 struct completion *waiting;
399 unsigned long flags;
398 400
399 /* Bounce SCSI-initiated commands to the SCSI EH */ 401 /* Bounce SCSI-initiated commands to the SCSI EH */
400 if (qc->scsicmd) { 402 if (qc->scsicmd) {
403 spin_lock_irqsave(q->queue_lock, flags);
401 blk_abort_request(qc->scsicmd->request); 404 blk_abort_request(qc->scsicmd->request);
405 spin_unlock_irqrestore(q->queue_lock, flags);
402 scsi_schedule_eh(qc->scsicmd->device->host); 406 scsi_schedule_eh(qc->scsicmd->device->host);
403 return; 407 return;
404 } 408 }