dmaengine: sprd: Add validation of current descriptor in irq handler
When user terminates one DMA channel to free all its descriptors, but at the same time one transaction interrupt was triggered possibly, now we should not handle this interrupt by validating if the 'schan->cur_desc' was set as NULL to avoid crashing the kernel. Signed-off-by: Baolin Wang <baolin.wang@linaro.org> Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
16d0f85e45
commit
58152b0e57
@ -552,12 +552,17 @@ static irqreturn_t dma_irq_handle(int irq, void *dev_id)
|
||||
schan = &sdev->channels[i];
|
||||
|
||||
spin_lock(&schan->vc.lock);
|
||||
|
||||
sdesc = schan->cur_desc;
|
||||
if (!sdesc) {
|
||||
spin_unlock(&schan->vc.lock);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
int_type = sprd_dma_get_int_type(schan);
|
||||
req_type = sprd_dma_get_req_type(schan);
|
||||
sprd_dma_clear_int(schan);
|
||||
|
||||
sdesc = schan->cur_desc;
|
||||
|
||||
/* cyclic mode schedule callback */
|
||||
cyclic = schan->linklist.phy_addr ? true : false;
|
||||
if (cyclic == true) {
|
||||
|
Loading…
Reference in New Issue
Block a user