53 lines
1.7 KiB
Diff
53 lines
1.7 KiB
Diff
|
|
From 37b765efbca81e4aa81fcb685e7810398e800e29 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Chengwen Feng <fengchengwen@huawei.com>
|
||
|
|
Date: Thu, 2 Mar 2023 07:50:05 +0000
|
||
|
|
Subject: compressdev: fix empty devargs parsing
|
||
|
|
|
||
|
|
[ upstream commit bb27182482d61777de6a38b16a1d2c692c2c3f8b ]
|
||
|
|
|
||
|
|
The rte_kvargs_process() was used to parse KV pairs, it also supports
|
||
|
|
to parse 'only keys' (e.g. socket_id) type. And the callback function
|
||
|
|
parameter 'value' is NULL when parsed 'only keys'.
|
||
|
|
|
||
|
|
This patch fixes segment fault in rte_compressdev_pmd_parse_uint_arg()
|
||
|
|
when parse input args with 'only keys' (e.g. socket_id).
|
||
|
|
|
||
|
|
For a similar reason, this patch fixes
|
||
|
|
rte_compressdev_pmd_parse_name_arg().
|
||
|
|
|
||
|
|
Fixes: ed7dd94f7f66 ("compressdev: add basic device management")
|
||
|
|
Cc: stable@dpdk.org
|
||
|
|
|
||
|
|
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
|
||
|
|
---
|
||
|
|
lib/compressdev/rte_compressdev_pmd.c | 6 ++++++
|
||
|
|
1 file changed, 6 insertions(+)
|
||
|
|
|
||
|
|
diff --git a/lib/compressdev/rte_compressdev_pmd.c b/lib/compressdev/rte_compressdev_pmd.c
|
||
|
|
index 7f500d76d4..6a11a396b7 100644
|
||
|
|
--- a/lib/compressdev/rte_compressdev_pmd.c
|
||
|
|
+++ b/lib/compressdev/rte_compressdev_pmd.c
|
||
|
|
@@ -20,6 +20,9 @@ rte_compressdev_pmd_parse_name_arg(const char *key __rte_unused,
|
||
|
|
struct rte_compressdev_pmd_init_params *params = extra_args;
|
||
|
|
int n;
|
||
|
|
|
||
|
|
+ if (value == NULL || extra_args == NULL)
|
||
|
|
+ return -EINVAL;
|
||
|
|
+
|
||
|
|
n = strlcpy(params->name, value, RTE_COMPRESSDEV_NAME_MAX_LEN);
|
||
|
|
if (n >= RTE_COMPRESSDEV_NAME_MAX_LEN)
|
||
|
|
return -EINVAL;
|
||
|
|
@@ -37,6 +40,9 @@ rte_compressdev_pmd_parse_uint_arg(const char *key __rte_unused,
|
||
|
|
int i;
|
||
|
|
char *end;
|
||
|
|
|
||
|
|
+ if (value == NULL || extra_args == NULL)
|
||
|
|
+ return -EINVAL;
|
||
|
|
+
|
||
|
|
errno = 0;
|
||
|
|
i = strtol(value, &end, 10);
|
||
|
|
if (*end != 0 || errno != 0 || i < 0)
|
||
|
|
--
|
||
|
|
2.23.0
|
||
|
|
|