[dpdk-dev] [RFC 3/9] devargs: fix memory leak in legacy parser

Xueming Li xuemingl at nvidia.com
Fri Dec 18 16:16:48 CET 2020


Data field was designed as parser buffer, will be released once in
releasing struct memory. The duplicated device arguments was not saved
to data and this caused memory leak.

This patch fixes this leak by saving to new allocated memory to data
field.

Fixes: 4969f5914c9e ("devargs: introduce new parsing helper")
Cc: gaetan.rivet at 6wind.com
Cc: stable at dpdk.org

Signed-off-by: Xueming Li <xuemingl at nvidia.com>
---
 lib/librte_eal/common/eal_common_devargs.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/librte_eal/common/eal_common_devargs.c b/lib/librte_eal/common/eal_common_devargs.c
index f36f71fbce..3c4774c88a 100644
--- a/lib/librte_eal/common/eal_common_devargs.c
+++ b/lib/librte_eal/common/eal_common_devargs.c
@@ -224,13 +224,14 @@ rte_devargs_parse(struct rte_devargs *da, const char *dev)
 	da->bus = bus;
 	/* Parse eventual device arguments */
 	if (devname[i] == ',')
-		da->args = strdup(&devname[i + 1]);
+		da->data = strdup(&devname[i + 1]);
 	else
-		da->args = strdup("");
-	if (da->args == NULL) {
+		da->data = strdup("");
+	if (da->data == NULL) {
 		RTE_LOG(ERR, EAL, "not enough memory to parse arguments\n");
 		return -ENOMEM;
 	}
+	da->args = da->data;
 	return 0;
 }
 
-- 
2.25.1



More information about the dev mailing list