2017-08-06 14:03:41

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH] mtd: physmap_of: Fix resources leak in 'of_flash_probe()'

If 'of_flash_probe_gemini()' or 'of_flash_probe_versatile()' fail, we must
reslease some resources, as already done in all error handling paths in
this function.

Signed-off-by: Christophe JAILLET <[email protected]>
---
drivers/mtd/maps/physmap_of_core.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/maps/physmap_of_core.c b/drivers/mtd/maps/physmap_of_core.c
index 62fa6836f218..2c8cc97ce019 100644
--- a/drivers/mtd/maps/physmap_of_core.c
+++ b/drivers/mtd/maps/physmap_of_core.c
@@ -235,10 +235,10 @@ static int of_flash_probe(struct platform_device *dev)

err = of_flash_probe_gemini(dev, dp, &info->list[i].map);
if (err)
- return err;
+ goto err_out;
err = of_flash_probe_versatile(dev, dp, &info->list[i].map);
if (err)
- return err;
+ goto err_out;

err = -ENOMEM;
info->list[i].map.virt = ioremap(info->list[i].map.phys,
--
2.11.0


2017-08-17 13:04:32

by Boris Brezillon

[permalink] [raw]
Subject: Re: [PATCH] mtd: physmap_of: Fix resources leak in 'of_flash_probe()'

Le Sun, 6 Aug 2017 14:55:01 +0200,
Christophe JAILLET <[email protected]> a écrit :

> If 'of_flash_probe_gemini()' or 'of_flash_probe_versatile()' fail, we must
> reslease some resources, as already done in all error handling paths in
> this function.

Applied to l2-mtd/master.

Thanks,

Boris

>
> Signed-off-by: Christophe JAILLET <[email protected]>
> ---
> drivers/mtd/maps/physmap_of_core.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mtd/maps/physmap_of_core.c b/drivers/mtd/maps/physmap_of_core.c
> index 62fa6836f218..2c8cc97ce019 100644
> --- a/drivers/mtd/maps/physmap_of_core.c
> +++ b/drivers/mtd/maps/physmap_of_core.c
> @@ -235,10 +235,10 @@ static int of_flash_probe(struct platform_device *dev)
>
> err = of_flash_probe_gemini(dev, dp, &info->list[i].map);
> if (err)
> - return err;
> + goto err_out;
> err = of_flash_probe_versatile(dev, dp, &info->list[i].map);
> if (err)
> - return err;
> + goto err_out;
>
> err = -ENOMEM;
> info->list[i].map.virt = ioremap(info->list[i].map.phys,