[v1,3/7] devargs: fix memory leak in legacy parser
Checks
Commit Message
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@6wind.com
Cc: stable@dpdk.org
Signed-off-by: Xueming Li <xuemingl@nvidia.com>
---
lib/librte_eal/common/eal_common_devargs.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
@@ -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;
}