dmaengine: at_xdmac: remove BUG_ON macro in tasklet
authorNicolas Ferre <nicolas.ferre@microchip.com>
Wed, 3 Apr 2019 10:23:57 +0000 (12:23 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 31 May 2019 13:46:17 +0000 (06:46 -0700)
[ Upstream commit e2c114c06da2d9ffad5b16690abf008d6696f689 ]

Even if this case shouldn't happen when controller is properly programmed,
it's still better to avoid dumping a kernel Oops for this.
As the sequence may happen only for debugging purposes, log the error and
just finish the tasklet call.

Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/dma/at_xdmac.c

index a75b95f..db5b8fe 100644 (file)
@@ -1606,7 +1606,11 @@ static void at_xdmac_tasklet(unsigned long data)
                                        struct at_xdmac_desc,
                                        xfer_node);
                dev_vdbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, desc);
-               BUG_ON(!desc->active_xfer);
+               if (!desc->active_xfer) {
+                       dev_err(chan2dev(&atchan->chan), "Xfer not active: exiting");
+                       spin_unlock_bh(&atchan->lock);
+                       return;
+               }
 
                txd = &desc->tx_dma_desc;