staging: mt7621-mmc: Fix memory leek in case of error in probe
authorChristian Lütke-Stetzkamp <christian@lkamp.de>
Wed, 4 Apr 2018 20:15:33 +0000 (22:15 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 23 Apr 2018 13:34:02 +0000 (15:34 +0200)
If the base address is not successfully obtained in the probe
function, then the mmc_host struct is not freed. Adding an exit for
that case fixes the bug.

Signed-off-by: Christian Lütke-Stetzkamp <christian@lkamp.de>
Reviewed-by: NeilBrown <neil@brown.name>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/mt7621-mmc/sd.c

index 5f829f7..065d1b3 100644 (file)
@@ -2719,8 +2719,10 @@ static int msdc_drv_probe(struct platform_device *pdev)
        //BUG_ON((!hw) || (!mem) || (irq < 0)); /* --- by chhung */
 
        base = devm_ioremap_resource(&pdev->dev, res);
-       if (IS_ERR(base))
-               return PTR_ERR(base);
+       if (IS_ERR(base)) {
+               ret = PTR_ERR(base);
+               goto host_free;
+       }
 
        /* Set host parameters to mmc */
        mmc->ops        = &mt_msdc_ops;
@@ -2861,6 +2863,7 @@ release:
        if (mem)
                release_mem_region(mem->start, mem->end - mem->start + 1);
 
+host_free:
        mmc_free_host(mmc);
 
        return ret;