[U-Boot] [PATCH] common: miiphyutil: avoid memory leak

The following code will alloc memory for new_dev and ldev: " new_dev = mdio_alloc(); ldev = malloc(sizeof(*ldev)); " Either new_dev or ldev is NULL, directly return, but this may leak memory. So before return, using free(ldev) and mdio_free(new_dev) to avoid leaking memory, also free can handle NULL pointer.
Signed-off-by: Peng Fan Peng.Fan@freescale.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: Simon Glass sjg@chromium.org Cc: Bin Meng bmeng.cn@gmail.com --- common/miiphyutil.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/common/miiphyutil.c b/common/miiphyutil.c index 0811e09..7e41957 100644 --- a/common/miiphyutil.c +++ b/common/miiphyutil.c @@ -114,6 +114,8 @@ void miiphy_register(const char *name, if (new_dev == NULL || ldev == NULL) { printf("miiphy_register: cannot allocate memory for '%s'\n", name); + free(ldev); + mdio_free(new_dev); return; }

On Thu, Nov 26, 2015 at 10:26 AM, Peng Fan Peng.Fan@freescale.com wrote:
The following code will alloc memory for new_dev and ldev: " new_dev = mdio_alloc(); ldev = malloc(sizeof(*ldev)); " Either new_dev or ldev is NULL, directly return, but this may leak memory. So before return, using free(ldev) and mdio_free(new_dev) to avoid leaking memory, also free can handle NULL pointer.
Signed-off-by: Peng Fan Peng.Fan@freescale.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: Simon Glass sjg@chromium.org Cc: Bin Meng bmeng.cn@gmail.com
common/miiphyutil.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/common/miiphyutil.c b/common/miiphyutil.c index 0811e09..7e41957 100644 --- a/common/miiphyutil.c +++ b/common/miiphyutil.c @@ -114,6 +114,8 @@ void miiphy_register(const char *name, if (new_dev == NULL || ldev == NULL) { printf("miiphy_register: cannot allocate memory for '%s'\n", name);
free(ldev);
mdio_free(new_dev); return; }
--
Reviewed-by: Bin Meng bmeng.cn@gmail.com

Hi Peng
On Wed, Nov 25, 2015 at 8:26 PM, Peng Fan Peng.Fan@freescale.com wrote:
The following code will alloc memory for new_dev and ldev: " new_dev = mdio_alloc(); ldev = malloc(sizeof(*ldev)); " Either new_dev or ldev is NULL, directly return, but this may leak memory. So before return, using free(ldev) and mdio_free(new_dev) to avoid leaking memory, also free can handle NULL pointer.
Signed-off-by: Peng Fan Peng.Fan@freescale.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: Simon Glass sjg@chromium.org Cc: Bin Meng bmeng.cn@gmail.com
Acked-by: Joe Hershberger joe.hershberger@ni.com

On Thu, Nov 26, 2015 at 10:26:59AM +0800, Peng Fan wrote:
The following code will alloc memory for new_dev and ldev: " new_dev = mdio_alloc(); ldev = malloc(sizeof(*ldev)); " Either new_dev or ldev is NULL, directly return, but this may leak memory. So before return, using free(ldev) and mdio_free(new_dev) to avoid leaking memory, also free can handle NULL pointer.
Signed-off-by: Peng Fan Peng.Fan@freescale.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: Simon Glass sjg@chromium.org Cc: Bin Meng bmeng.cn@gmail.com Reviewed-by: Bin Meng bmeng.cn@gmail.com Acked-by: Joe Hershberger joe.hershberger@ni.com
Applied to u-boot/master, thanks!
participants (4)
-
Bin Meng
-
Joe Hershberger
-
Peng Fan
-
Tom Rini