--- 1c558d3bce18c4817623078944e86557eb3adb9f +++ 39fb9aa93fe51175e4a18ae3c4b47cc4e3d2d3ce @@ -1025,6 +1025,8 @@ int __sas_task_abort(struct sas_task *ta 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) { @@ -1039,7 +1041,9 @@ void sas_task_abort(struct sas_task *tas return; } + 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); }