From: Wei Yongjun yongjun_wei@trendmicro.com.cn
Add the missing iounmap() before return from snd_mfld_mc_probe() in the error handling case and to snd_mfld_mc_remove().
Signed-off-by: Wei Yongjun yongjun_wei@trendmicro.com.cn --- sound/soc/mid-x86/mfld_machine.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/sound/soc/mid-x86/mfld_machine.c b/sound/soc/mid-x86/mfld_machine.c index 78d5825..8206e84 100644 --- a/sound/soc/mid-x86/mfld_machine.c +++ b/sound/soc/mid-x86/mfld_machine.c @@ -397,7 +397,7 @@ static int snd_mfld_mc_probe(struct platform_device *pdev) IRQF_SHARED, pdev->dev.driver->name, mc_drv_ctx); if (ret_val) { pr_err("cannot register IRQ\n"); - goto unalloc; + goto unmap; } /* register the soc card */ snd_soc_card_mfld.dev = &pdev->dev; @@ -412,6 +412,8 @@ static int snd_mfld_mc_probe(struct platform_device *pdev)
freeirq: free_irq(irq, mc_drv_ctx); +unmap: + iounmap(mc_drv_ctx->int_base); unalloc: kfree(mc_drv_ctx); return ret_val; @@ -424,6 +426,7 @@ static int snd_mfld_mc_remove(struct platform_device *pdev) pr_debug("snd_mfld_mc_remove called\n"); free_irq(platform_get_irq(pdev, 0), mc_drv_ctx); snd_soc_unregister_card(&snd_soc_card_mfld); + iounmap(mc_drv_ctx->int_base); kfree(mc_drv_ctx); return 0; }