Re: [PATCH 24/25] dmaengine: dw-edma: Skip cleanup procedure if no private data found

From: Manivannan Sadhasivam
Date: Fri Mar 25 2022 - 15:39:28 EST


On Thu, Mar 24, 2022 at 04:48:35AM +0300, Serge Semin wrote:
> DW eDMA driver private data is preserved in the passed DW eDMA chip info
> structure. If either probe procedure failed or for some reason the passed
> info object doesn't have private data pointer initialized we need to halt
> the DMA device cleanup procedure in order to prevent possible system
> crashes.
>

How come remove() could happen when probe() failed? If you hit this issue then
something else is utterly going wrong.

Thanks,
Mani

> Signed-off-by: Serge Semin <Sergey.Semin@xxxxxxxxxxxxxxxxxxxx>
> ---
> drivers/dma/dw-edma/dw-edma-core.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-edma-core.c
> index ca5cd7c99571..b932682a8ba8 100644
> --- a/drivers/dma/dw-edma/dw-edma-core.c
> +++ b/drivers/dma/dw-edma/dw-edma-core.c
> @@ -1030,6 +1030,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);
>
> --
> 2.35.1
>