scsi: qla2xxx: Don't call dma_free_coherent with IRQ disabled.
authorGiridhar Malavali <giridhar.malavali@cavium.com>
Thu, 28 Dec 2017 20:33:21 +0000 (12:33 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 4 Jan 2018 04:41:05 +0000 (23:41 -0500)
The logo ELS command allocates dma coherent memory for the
data payload and serialize the completions. When this command
times out, the timeout routine completes the thread waiting
for completion which in turn cleanup resources allocated for
this ELS command processing. Don't call generic sp->free
routine when this ELS command times out to avoid to double
freeing of the same resources.

Signed-off-by: Giridhar Malavali <giridhar.malavali@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_init.c

index 56bff7856cf8f1e47b21b17166b4490c552c5cfb..4e6d3eb4caa4cea110051584bdf18228c5b3a3f2 100644 (file)
@@ -59,7 +59,8 @@ qla2x00_sp_timeout(struct timer_list *t)
        req->outstanding_cmds[sp->handle] = NULL;
        iocb = &sp->u.iocb_cmd;
        iocb->timeout(sp);
-       sp->free(sp);
+       if (sp->type != SRB_ELS_DCMD)
+               sp->free(sp);
        spin_unlock_irqrestore(&vha->hw->hardware_lock, flags);
 }