Commit 64bdf2d6 authored by Wei Yongjun's avatar Wei Yongjun Committed by Seth Forshee

dmaengine: at_xdmac: fix to pass correct device identity to free_irq()

BugLink: http://bugs.launchpad.net/bugs/1631468

commit 6a8b0c6b upstream.

free_irq() expects the same device identity that was passed to
corresponding request_irq(), otherwise the IRQ is not freed.

Fixes: e1f7c9ee ("dmaengine: at_xdmac: creation of the atmel eXtended DMA Controller driver")
Signed-off-by: default avatarWei Yongjun <weiyj.lk@gmail.com>
Acked-by: default avatarLudovic Desroches <ludovic.desroches@atmel.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarTim Gardner <tim.gardner@canonical.com>
parent 49a9e92c
...@@ -2055,7 +2055,7 @@ static int at_xdmac_probe(struct platform_device *pdev) ...@@ -2055,7 +2055,7 @@ static int at_xdmac_probe(struct platform_device *pdev)
err_clk_disable: err_clk_disable:
clk_disable_unprepare(atxdmac->clk); clk_disable_unprepare(atxdmac->clk);
err_free_irq: err_free_irq:
free_irq(atxdmac->irq, atxdmac->dma.dev); free_irq(atxdmac->irq, atxdmac);
return ret; return ret;
} }
...@@ -2071,7 +2071,7 @@ static int at_xdmac_remove(struct platform_device *pdev) ...@@ -2071,7 +2071,7 @@ static int at_xdmac_remove(struct platform_device *pdev)
synchronize_irq(atxdmac->irq); synchronize_irq(atxdmac->irq);
free_irq(atxdmac->irq, atxdmac->dma.dev); free_irq(atxdmac->irq, atxdmac);
for (i = 0; i < atxdmac->dma.chancnt; i++) { for (i = 0; i < atxdmac->dma.chancnt; i++) {
struct at_xdmac_chan *atchan = &atxdmac->chan[i]; struct at_xdmac_chan *atchan = &atxdmac->chan[i];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment