| From 45a718447c879e214a9452919bbe8356f0dc00a5 Mon Sep 17 00:00:00 2001 |
| From: Nicolas Ferre <nicolas.ferre@microchip.com> |
| Date: Wed, 3 Apr 2019 12:23:57 +0200 |
| Subject: dmaengine: at_xdmac: remove BUG_ON macro in tasklet |
| |
| [ 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 | 6 +++++- |
| 1 file changed, 5 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c |
| index fe69dccfa0c05..37a2694204351 100644 |
| --- a/drivers/dma/at_xdmac.c |
| +++ b/drivers/dma/at_xdmac.c |
| @@ -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; |
| |
| -- |
| 2.20.1 |
| |