On Tue, Nov 27, 2018 at 05:06:35PM +0100, Richard Genoud wrote: > of_dma_controller_free() was not called on module onloading. s/onloading/unloading > This lead to a soft lockup: > watchdog: BUG: soft lockup - CPU#0 stuck for 23s! > Modules linked in: at_hdmac [last unloaded: at_hdmac] > when of_dma_request_slave_channel() tried to call ofdma->of_dma_xlate(). > > Cc: stable@xxxxxxxxxxxxxxx > Fixes: bbe89c8e3d59 ("at_hdmac: move to generic DMA binding") > Signed-off-by: Richard Genoud <richard.genoud@xxxxxxxxx> Acked-by: Ludovic Desroches <ludovic.desroches@xxxxxxxxxxxxx> Thanks Ludovic > --- > drivers/dma/at_hdmac.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c > index 1b7f0ca0d5cd..01d936c9fe89 100644 > --- a/drivers/dma/at_hdmac.c > +++ b/drivers/dma/at_hdmac.c > @@ -2006,6 +2006,8 @@ static int at_dma_remove(struct platform_device *pdev) > struct resource *io; > > at_dma_off(atdma); > + if (pdev->dev.of_node) > + of_dma_controller_free(pdev->dev.of_node); > dma_async_device_unregister(&atdma->dma_common); > > dma_pool_destroy(atdma->memset_pool);