diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c index 1035bc7fa55d..57b60cf7194c 100644 --- a/drivers/dma/ste_dma40.c +++ b/drivers/dma/ste_dma40.c @@ -3841,18 +3841,20 @@ static int __init d40_probe(struct platform_device *pdev) } ret = d40_dmaengine_init(base, num_reserved_chans); if (ret) - goto destroy_cache; + goto release_irq; ret = of_dma_controller_register(np, d40_xlate, NULL); if (ret) { dev_err(dev, "could not register of_dma_controller\n"); - goto destroy_cache; + goto release_irq; } dev_info(base->dev, "initialized\n"); return 0; + release_irq: + free_irq(base->irq, base); destroy_cache: if (base->lcla_pool.dma_addr) dma_unmap_single(base->dev, base->lcla_pool.dma_addr,