]> git.itanic.dy.fi Git - linux-stable/commitdiff
dmaengine: dw-edma: Skip cleanup procedure if no private data found
authorSerge Semin <Sergey.Semin@baikalelectronics.ru>
Fri, 13 Jan 2023 17:14:04 +0000 (20:14 +0300)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 10 Feb 2023 23:15:23 +0000 (17:15 -0600)
DW eDMA driver private data is preserved in the passed DW eDMA chip info
structure. If the probe fails or for some reason the passed info object
doesn't have the private data pointer initialized, halt the DMA device
cleanup procedure to prevent system crashes.

Link: https://lore.kernel.org/r/20230113171409.30470-23-Sergey.Semin@baikalelectronics.ru
Tested-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Acked-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/dw-edma/dw-edma-core.c

index e3671bfbe186685b0764f4a9bcdfb86f91f097d4..1906a836f0aabbaee6d2314f9cc572d7b07eeef3 100644 (file)
@@ -1011,6 +1011,10 @@ int dw_edma_remove(struct dw_edma_chip *chip)
        struct dw_edma *dw = chip->dw;
        int i;
 
+       /* Skip removal if no private data found */
+       if (!dw)
+               return -ENODEV;
+
        /* Disable eDMA */
        dw_edma_v0_core_off(dw);