Message ID | 20181127160635.11836-2-richard.genoud@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | dmaengine: at_hdmac: fix module unloading | expand |
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@vger.kernel.org > Fixes: bbe89c8e3d59 ("at_hdmac: move to generic DMA binding") > Signed-off-by: Richard Genoud <richard.genoud@gmail.com> Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com> 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);
On 27-11-18, 17:06, Richard Genoud wrote: > of_dma_controller_free() was not called on module onloading. > 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(). Applied, thanks
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);
of_dma_controller_free() was not called on module onloading. 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@vger.kernel.org Fixes: bbe89c8e3d59 ("at_hdmac: move to generic DMA binding") Signed-off-by: Richard Genoud <richard.genoud@gmail.com> --- drivers/dma/at_hdmac.c | 2 ++ 1 file changed, 2 insertions(+)