From: Giridhar Malavali Date: Thu, 28 Dec 2017 20:33:21 +0000 (-0800) Subject: scsi: qla2xxx: Don't call dma_free_coherent with IRQ disabled. X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=045d6ea200af794ba15515984cff63787a7fc3c0;p=openwrt%2Fstaging%2Fblogic.git scsi: qla2xxx: Don't call dma_free_coherent with IRQ disabled. 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 Signed-off-by: Himanshu Madhani Signed-off-by: Martin K. Petersen --- diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index 56bff7856cf8..4e6d3eb4caa4 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -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); }