On 08-07-22, 18:01, Ben Dooks wrote: > If the channel has no descriptor and the interrupt is raised then the > kernel will OOPS. Check the result of vchan_next_desc() in the handler > axi_chan_block_xfer_complete() to avoid the error happening. Applied, thanks > > Signed-off-by: Ben Dooks <ben.dooks@xxxxxxxxxx> > --- > drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c > index d6ef5f49f281..1fedf4376678 100644 > --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c > +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c > @@ -1082,6 +1082,11 @@ static void axi_chan_block_xfer_complete(struct axi_dma_chan *chan) > > /* The completed descriptor currently is in the head of vc list */ > vd = vchan_next_desc(&chan->vc); > + if (!vd) { > + dev_err(chan2dev(chan), "BUG: %s, IRQ with no descriptors\n", > + axi_chan_name(chan)); > + goto out; > + } > > if (chan->cyclic) { > desc = vd_to_axi_desc(vd); > @@ -1111,6 +1116,7 @@ static void axi_chan_block_xfer_complete(struct axi_dma_chan *chan) > axi_chan_start_first_queued(chan); > } > > +out: > spin_unlock_irqrestore(&chan->vc.lock, flags); > } > > -- > 2.35.1 -- ~Vinod