anitazha / rpms / ndctl

Forked from rpms/ndctl 2 years ago
Clone

Blame 0215-libcxl-fox-a-resource-leak-and-a-forward-NULL-check.patch

Jeff Moyer 2c91dc
From 4750c7f50050195bbd427da69037645916a59b24 Mon Sep 17 00:00:00 2001
Jeff Moyer 2c91dc
From: Vishal Verma <vishal.l.verma@intel.com>
Jeff Moyer 2c91dc
Date: Tue, 23 Aug 2022 01:45:26 -0600
Jeff Moyer 2c91dc
Subject: [PATCH 215/217] libcxl: fox a resource leak and a forward NULL check
Jeff Moyer 2c91dc
Jeff Moyer 2c91dc
Static analysis reports a couple of issues in add_cxl_region(). Firstly,
Jeff Moyer 2c91dc
'path' wasn't freed in the success case, only in the error case.
Jeff Moyer 2c91dc
Secondly, the error handling after 'calloc()'ing the region object
Jeff Moyer 2c91dc
erroneously jumped to the error path which tried to free the region object.
Jeff Moyer 2c91dc
Jeff Moyer 2c91dc
Add a new error label to just free 'path' and return for this exit case.
Jeff Moyer 2c91dc
Jeff Moyer 2c91dc
Link: https://lore.kernel.org/r/20220823074527.404435-3-vishal.l.verma@intel.com
Jeff Moyer 2c91dc
Cc: Dan Williams <dan.j.williams@intel.com>
Jeff Moyer 2c91dc
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Jeff Moyer 2c91dc
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Jeff Moyer 2c91dc
---
Jeff Moyer 2c91dc
 cxl/lib/libcxl.c | 4 +++-
Jeff Moyer 2c91dc
 1 file changed, 3 insertions(+), 1 deletion(-)
Jeff Moyer 2c91dc
Jeff Moyer 2c91dc
diff --git a/cxl/lib/libcxl.c b/cxl/lib/libcxl.c
Jeff Moyer 2c91dc
index 021d59f..e8c5d44 100644
Jeff Moyer 2c91dc
--- a/cxl/lib/libcxl.c
Jeff Moyer 2c91dc
+++ b/cxl/lib/libcxl.c
Jeff Moyer 2c91dc
@@ -482,7 +482,7 @@ static void *add_cxl_region(void *parent, int id, const char *cxlregion_base)
Jeff Moyer 2c91dc
 
Jeff Moyer 2c91dc
 	region = calloc(1, sizeof(*region));
Jeff Moyer 2c91dc
 	if (!region)
Jeff Moyer 2c91dc
-		goto err;
Jeff Moyer 2c91dc
+		goto err_path;
Jeff Moyer 2c91dc
 
Jeff Moyer 2c91dc
 	region->id = id;
Jeff Moyer 2c91dc
 	region->ctx = ctx;
Jeff Moyer 2c91dc
@@ -551,11 +551,13 @@ static void *add_cxl_region(void *parent, int id, const char *cxlregion_base)
Jeff Moyer 2c91dc
 
Jeff Moyer 2c91dc
 	list_add_sorted(&decoder->regions, region, list, region_start_cmp);
Jeff Moyer 2c91dc
 
Jeff Moyer 2c91dc
+	free(path);
Jeff Moyer 2c91dc
 	return region;
Jeff Moyer 2c91dc
 err:
Jeff Moyer 2c91dc
 	free(region->dev_path);
Jeff Moyer 2c91dc
 	free(region->dev_buf);
Jeff Moyer 2c91dc
 	free(region);
Jeff Moyer 2c91dc
+err_path:
Jeff Moyer 2c91dc
 	free(path);
Jeff Moyer 2c91dc
 	return NULL;
Jeff Moyer 2c91dc
 }
Jeff Moyer 2c91dc
-- 
Jeff Moyer 2c91dc
2.27.0
Jeff Moyer 2c91dc