From b0015963f51b351ea236d1681868ecc2e4a8dd23 Mon Sep 17 00:00:00 2001 From: Tianhua Sun Date: Fri, 14 Jun 2019 16:04:47 +0800 Subject: [PATCH] dm: fix some potential memory leaks This patch is to fix some potential memory leak issues 1, free mrp if the mmio_rb_lookup() function return 0; 2, free memory allocated by strdup in some error case handling. Tracked-On: #3277 Signed-off-by: Tianhua Sun Acked-by: Anthony Xu --- devicemodel/core/mem.c | 5 ++--- devicemodel/hw/pci/xhci.c | 2 ++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/devicemodel/core/mem.c b/devicemodel/core/mem.c index 59242b200..9d2f4235c 100644 --- a/devicemodel/core/mem.c +++ b/devicemodel/core/mem.c @@ -196,7 +196,7 @@ register_mem_int(struct mmio_rb_tree *rbt, struct mem_range *memp) struct mmio_rb_range *entry, *mrp; int err; - err = 0; + err = -1; mrp = malloc(sizeof(struct mmio_rb_range)); @@ -210,8 +210,7 @@ register_mem_int(struct mmio_rb_tree *rbt, struct mem_range *memp) pthread_rwlock_unlock(&mmio_rwlock); if (err) free(mrp); - } else - err = -1; + } return err; } diff --git a/devicemodel/hw/pci/xhci.c b/devicemodel/hw/pci/xhci.c index 582fe0b4e..3090fd92c 100644 --- a/devicemodel/hw/pci/xhci.c +++ b/devicemodel/hw/pci/xhci.c @@ -4126,6 +4126,8 @@ errout: free(xdev->portregs); xdev->portregs = NULL; } + if (rc < -2 && s) + free(s); UPRINTF(LFTL, "fail to parse xHCI options, rc=%d\r\n", rc); if (opts)