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 >