dmaengine: mcf-edma: Fix NULL pointer exception in mcf_edma_tx_handler
authorKrzysztof Kozlowski <krzk@kernel.org>
Thu, 11 Jun 2020 13:21:05 +0000 (15:21 +0200)
committerVinod Koul <vkoul@kernel.org>
Wed, 24 Jun 2020 07:36:15 +0000 (13:06 +0530)
commit8995aa3d164ddd9200e6abcf25c449cf5298c858
tree4ebf527af4623d40d36fffa014a50bdd58cae204
parentf5e5677c420346b4e9788051c2e4d750996c428c
dmaengine: mcf-edma: Fix NULL pointer exception in mcf_edma_tx_handler

On Toradex Colibri VF50 (Vybrid VF5xx) with fsl-edma driver NULL pointer
exception happens occasionally on serial output initiated by login
timeout.

This was reproduced only if kernel was built with significant debugging
options and EDMA driver is used with serial console.

Issue looks like a race condition between interrupt handler
fsl_edma_tx_handler() (called as a result of fsl_edma_xfer_desc()) and
terminating the transfer with fsl_edma_terminate_all().

The fsl_edma_tx_handler() handles interrupt for a transfer with already
freed edesc and idle==true.

The mcf-edma driver shares design and lot of code with fsl-edma.  It
looks like being affected by same problem.  Fix this pattern the same
way as fix for fsl-edma driver.

Fixes: e7a3ff92eaf1 ("dmaengine: fsl-edma: add ColdFire mcf5441x edma support")
Cc: <stable@vger.kernel.org>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Reviewed-by: Robin Gong <yibin.gong@nxp.com>
Link: https://lore.kernel.org/r/1591881665-25592-1-git-send-email-krzk@kernel.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/mcf-edma.c