Sync some patchs from upstreaming and modifies are as follow: 1. The rte_kvargs_process() was used to parse KV pairs, it also supports to parse 'only keys' type. And the callback function parameter 'value' is NULL when parsed 'only keys'. This patch fixes segment fault when parse input args with 'only keys'. 2. The MAP_FAILED should be used to determine whether the mapping is successful but not NULL. This patch fix it. (cherry picked from commit dfaed15bf9253e6b71dda7639806c0b265164a9e)
56 lines
1.7 KiB
Diff
56 lines
1.7 KiB
Diff
From 23320d21b4abc8f52c612768a8508443f77dfcd8 Mon Sep 17 00:00:00 2001
|
|
From: Chengwen Feng <fengchengwen@huawei.com>
|
|
Date: Thu, 2 Mar 2023 07:50:07 +0000
|
|
Subject: cryptodev: fix empty devargs parsing
|
|
|
|
[ upstream commit 8146454c56636ba8af5263b57e1c4a9f67fd4a39 ]
|
|
|
|
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_cryptodev_pmd_parse_uint_arg()
|
|
when parse input args with 'only keys' (e.g. socket_id,
|
|
max_nb_queue_pairs).
|
|
|
|
For a similar reason, this patch fixes
|
|
rte_cryptodev_pmd_parse_name_arg().
|
|
|
|
Fixes: 9e6edea41805 ("cryptodev: add APIs to assist PMD initialisation")
|
|
Cc: stable@dpdk.org
|
|
|
|
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
|
|
Acked-by: Akhil Goyal <gakhil@marvell.com>
|
|
---
|
|
lib/cryptodev/cryptodev_pmd.c | 7 +++++++
|
|
1 file changed, 7 insertions(+)
|
|
|
|
diff --git a/lib/cryptodev/cryptodev_pmd.c b/lib/cryptodev/cryptodev_pmd.c
|
|
index 739a0b3f34..9dab1ef7cd 100644
|
|
--- a/lib/cryptodev/cryptodev_pmd.c
|
|
+++ b/lib/cryptodev/cryptodev_pmd.c
|
|
@@ -19,6 +19,9 @@ rte_cryptodev_pmd_parse_name_arg(const char *key __rte_unused,
|
|
struct rte_cryptodev_pmd_init_params *params = extra_args;
|
|
int n;
|
|
|
|
+ if (value == NULL || extra_args == NULL)
|
|
+ return -EINVAL;
|
|
+
|
|
n = strlcpy(params->name, value, RTE_CRYPTODEV_NAME_MAX_LEN);
|
|
if (n >= RTE_CRYPTODEV_NAME_MAX_LEN)
|
|
return -EINVAL;
|
|
@@ -35,6 +38,10 @@ rte_cryptodev_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);
|
|
--
|
|
2.23.0
|
|
|