From patchwork Fri Nov 8 11:03:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148152 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 58F8745CA6; Fri, 8 Nov 2024 12:15:46 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 78C7F4334B; Fri, 8 Nov 2024 12:15:42 +0100 (CET) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id 4A6AD402ED for ; Fri, 8 Nov 2024 12:15:40 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.162.112]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4XlGXg1cj5z2Fbpf; Fri, 8 Nov 2024 19:13:55 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id DA3E214022E; Fri, 8 Nov 2024 19:15:38 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:38 +0800 From: Jie Hai To: , , , Sunil Kumar Kori , Rakesh Kudurumalla , Nithin Dabilpuram , Jerin Jacob CC: , , , Subject: [PATCH v5 01/25] app/graph: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:40 +0800 Message-ID: <20241108110404.18317-2-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 5c59002a34f3 ("app/graph: add graph commands") Fixes: 984a315a5804 ("app/graph: add parser utility") Signed-off-by: Jie Hai Acked-by: Chengwen Feng --- app/graph/graph.c | 6 ++++-- app/graph/utils.c | 16 ++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app/graph/graph.c b/app/graph/graph.c index 17717738d7d9..6849b8da5da4 100644 --- a/app/graph/graph.c +++ b/app/graph/graph.c @@ -13,6 +13,7 @@ #include #include #include +#include #include "graph_priv.h" #include "module_api.h" @@ -103,9 +104,10 @@ parser_usecases_read(char *usecases) { bool valid = false; uint32_t i, j = 0; + char *sp = NULL; char *token; - token = strtok(usecases, ","); + token = strtok_r(usecases, ",", &sp); while (token != NULL) { for (i = 0; i < RTE_DIM(supported_usecases); i++) { if (strcmp(supported_usecases[i], token) == 0) { @@ -116,7 +118,7 @@ parser_usecases_read(char *usecases) break; } } - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); } return valid; diff --git a/app/graph/utils.c b/app/graph/utils.c index 3e8099ea8821..6c53948aa277 100644 --- a/app/graph/utils.c +++ b/app/graph/utils.c @@ -10,6 +10,7 @@ #include #include +#include #include "module_api.h" @@ -94,13 +95,14 @@ int parser_ip4_read(uint32_t *value, char *p) { uint8_t shift = 24; + char *sp = NULL; uint32_t ip = 0; char *token; - token = strtok(p, "."); + token = strtok_r(p, ".", &sp); while (token != NULL) { ip |= (((uint32_t)strtoul(token, NULL, 10)) << shift); - token = strtok(NULL, "."); + token = strtok_r(NULL, ".", &sp); shift -= 8; } @@ -113,13 +115,14 @@ int parser_ip6_read(uint8_t *value, char *p) { uint64_t val = 0; + char *sp = NULL; char *token; - token = strtok(p, ":"); + token = strtok_r(p, ":", &sp); while (token != NULL) { hex_string_to_uint64(&val, token); *value = val; - token = strtok(NULL, ":"); + token = strtok_r(NULL, ":", &sp); value++; val = 0; } @@ -132,13 +135,14 @@ parser_mac_read(uint64_t *value, char *p) { uint64_t mac = 0, val = 0; uint8_t shift = 40; + char *sp = NULL; char *token; - token = strtok(p, ":"); + token = strtok_r(p, ":", &sp); while (token != NULL) { hex_string_to_uint64(&val, token); mac |= val << shift; - token = strtok(NULL, ":"); + token = strtok_r(NULL, ":", &sp); shift -= 8; val = 0; } From patchwork Fri Nov 8 11:03:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148153 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 54E6645CA6; Fri, 8 Nov 2024 12:15:52 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A463D43359; Fri, 8 Nov 2024 12:15:43 +0100 (CET) Received: from szxga07-in.huawei.com (szxga07-in.huawei.com [45.249.212.35]) by mails.dpdk.org (Postfix) with ESMTP id DDBEA402DF for ; Fri, 8 Nov 2024 12:15:40 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.44]) by szxga07-in.huawei.com (SkyGuard) with ESMTP id 4XlGXg1qTMz1SGCR; Fri, 8 Nov 2024 19:13:55 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 787A81402CE; Fri, 8 Nov 2024 19:15:39 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:38 +0800 From: Jie Hai To: , , , Nicolas Chautru , Maxime Coquelin , Amr Mokhtar CC: , , , Subject: [PATCH v5 02/25] app/bbdev: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:41 +0800 Message-ID: <20241108110404.18317-3-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 0acdb9866756 ("test/bbdev: add FFT operations cases") Fixes: f714a18885a6 ("app/testbbdev: add test application for bbdev") Signed-off-by: Jie Hai Acked-by: Chengwen Feng --- app/test-bbdev/test_bbdev_vector.c | 42 +++++++++++++++++------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/app/test-bbdev/test_bbdev_vector.c b/app/test-bbdev/test_bbdev_vector.c index 8b32850982c3..fbbdde70bdfc 100644 --- a/app/test-bbdev/test_bbdev_vector.c +++ b/app/test-bbdev/test_bbdev_vector.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "test_bbdev_vector.h" @@ -63,8 +64,9 @@ parse_values(char *tokens, uint32_t **data, uint32_t *data_length) uint32_t *values, *values_resized; char *tok, *error = NULL; + char *sp = NULL; - tok = strtok(tokens, VALUE_DELIMITER); + tok = strtok_r(tokens, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; @@ -98,7 +100,7 @@ parse_values(char *tokens, uint32_t **data, uint32_t *data_length) *data_length = *data_length + (strlen(tok) - strlen("0x"))/2; - tok = strtok(NULL, VALUE_DELIMITER); + tok = strtok_r(NULL, VALUE_DELIMITER, &sp); if (tok == NULL) break; @@ -324,8 +326,9 @@ parse_turbo_flags(char *tokens, uint32_t *op_flags, { char *tok = NULL; uint32_t op_flag_value = 0; + char *sp = NULL; - tok = strtok(tokens, VALUE_DELIMITER); + tok = strtok_r(tokens, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; @@ -359,7 +362,7 @@ parse_turbo_flags(char *tokens, uint32_t *op_flags, *op_flags = *op_flags | op_flag_value; - tok = strtok(NULL, VALUE_DELIMITER); + tok = strtok_r(NULL, VALUE_DELIMITER, &sp); if (tok == NULL) break; } @@ -399,9 +402,10 @@ static int parse_expected_status(char *tokens, int *status, enum rte_bbdev_op_type op_type) { char *tok = NULL; + char *sp = NULL; bool status_ok = false; - tok = strtok(tokens, VALUE_DELIMITER); + tok = strtok_r(tokens, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; @@ -432,7 +436,7 @@ parse_expected_status(char *tokens, int *status, enum rte_bbdev_op_type op_type) return -1; } - tok = strtok(NULL, VALUE_DELIMITER); + tok = strtok_r(NULL, VALUE_DELIMITER, &sp); if (tok == NULL) break; } @@ -932,6 +936,7 @@ parse_fft_params(const char *key_token, char *token, int ret = 0, status = 0, i, shift; uint32_t op_flags = 0; char *tok, *err = NULL; + char *sp = NULL; struct rte_bbdev_op_fft *fft = &vector->fft; @@ -964,7 +969,7 @@ parse_fft_params(const char *key_token, char *token, fft->output_leading_depadding = (uint32_t) strtoul(token, &err, 0); ret = ((err == NULL) || (*err != '\0')) ? -1 : 0; } else if (!strcmp(key_token, "window_index")) { - tok = strtok(token, VALUE_DELIMITER); + tok = strtok_r(token, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; for (i = 0; i < FFT_WIN_SIZE; i++) { @@ -972,7 +977,7 @@ parse_fft_params(const char *key_token, char *token, fft->window_index[i / 2] |= (uint32_t) strtoul(tok, &err, 0) << shift; if (i < (FFT_WIN_SIZE - 1)) { - tok = strtok(NULL, VALUE_DELIMITER); + tok = strtok_r(NULL, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; } @@ -1016,53 +1021,53 @@ parse_fft_params(const char *key_token, char *token, fft->output_depadded_size = (uint32_t) strtoul(token, &err, 0); ret = ((err == NULL) || (*err != '\0')) ? -1 : 0; } else if (!strcmp(key_token, "cs_theta_0")) { - tok = strtok(token, VALUE_DELIMITER); + tok = strtok_r(token, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; for (i = 0; i < FFT_WIN_SIZE; i++) { fft->cs_theta_0[i] = (uint32_t) strtoul(tok, &err, 0); if (i < (FFT_WIN_SIZE - 1)) { - tok = strtok(NULL, VALUE_DELIMITER); + tok = strtok_r(token, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; } } ret = ((err == NULL) || (*err != '\0')) ? -1 : 0; } else if (!strcmp(key_token, "cs_theta_d")) { - tok = strtok(token, VALUE_DELIMITER); + tok = strtok_r(token, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; for (i = 0; i < FFT_WIN_SIZE; i++) { fft->cs_theta_d[i] = (uint32_t) strtoul(tok, &err, 0); if (i < (FFT_WIN_SIZE - 1)) { - tok = strtok(NULL, VALUE_DELIMITER); + tok = strtok_r(token, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; } } ret = ((err == NULL) || (*err != '\0')) ? -1 : 0; } else if (!strcmp(key_token, "time_offset")) { - tok = strtok(token, VALUE_DELIMITER); + tok = strtok_r(token, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; for (i = 0; i < FFT_WIN_SIZE; i++) { fft->time_offset[i] = (uint32_t) strtoul(tok, &err, 0); if (i < (FFT_WIN_SIZE - 1)) { - tok = strtok(NULL, VALUE_DELIMITER); + tok = strtok_r(token, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; } } ret = ((err == NULL) || (*err != '\0')) ? -1 : 0; } else if (!strcmp(key_token, "fft_window_width")) { - tok = strtok(token, VALUE_DELIMITER); + tok = strtok_r(token, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; for (i = 0; i < FFT_WIN_SIZE; i++) { if (i == 0) vector->fft_window_width_vec = (uint32_t) strtoul(tok, &err, 0); if (i < (FFT_WIN_SIZE - 1)) { - tok = strtok(NULL, VALUE_DELIMITER); + tok = strtok_r(token, VALUE_DELIMITER, &sp); if (tok == NULL) return -1; } @@ -1163,6 +1168,7 @@ static int parse_entry(char *entry, struct test_bbdev_vector *vector) { int ret = 0; + char *sp = NULL; char *token, *key_token; enum rte_bbdev_op_type op_type = RTE_BBDEV_OP_NONE; @@ -1172,10 +1178,10 @@ parse_entry(char *entry, struct test_bbdev_vector *vector) } /* get key */ - token = strtok(entry, ENTRY_DELIMITER); + token = strtok_r(entry, ENTRY_DELIMITER, &sp); key_token = token; /* get values for key */ - token = strtok(NULL, ENTRY_DELIMITER); + token = strtok_r(NULL, ENTRY_DELIMITER, &sp); if (key_token == NULL || token == NULL) { printf("Expected 'key = values' but was '%.40s'..\n", entry); From patchwork Fri Nov 8 11:03:42 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148154 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E7D4945CA6; Fri, 8 Nov 2024 12:15:58 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E4F4F4335C; Fri, 8 Nov 2024 12:15:44 +0100 (CET) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id 709E843342 for ; Fri, 8 Nov 2024 12:15:41 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.44]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4XlGYM02f0z20sv7; Fri, 8 Nov 2024 19:14:31 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 212341402CE; Fri, 8 Nov 2024 19:15:40 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:39 +0800 From: Jie Hai To: , , , Fiona Trahe , Pablo de Lara , Shally Verma , Tomasz Jozwiak , Lee Daly CC: , , , Subject: [PATCH v5 03/25] app/compress-perf: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:42 +0800 Message-ID: <20241108110404.18317-4-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: e0b6287c035d ("app/compress-perf: add parser") Signed-off-by: Jie Hai Acked-by: Chengwen Feng --- .../comp_perf_options_parse.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/app/test-compress-perf/comp_perf_options_parse.c b/app/test-compress-perf/comp_perf_options_parse.c index 6d8c370fc2ea..6f3f907162e6 100644 --- a/app/test-compress-perf/comp_perf_options_parse.c +++ b/app/test-compress-perf/comp_perf_options_parse.c @@ -12,6 +12,7 @@ #include #include +#include #include "comp_perf_options.h" @@ -177,6 +178,7 @@ parse_range(const char *arg, uint8_t *min, uint8_t *max, uint8_t *inc) { char *token; uint8_t number; + char *sp = NULL; char *copy_arg = strdup(arg); @@ -184,7 +186,7 @@ parse_range(const char *arg, uint8_t *min, uint8_t *max, uint8_t *inc) return -1; errno = 0; - token = strtok(copy_arg, ":"); + token = strtok_r(copy_arg, ":", &sp); /* Parse minimum value */ if (token != NULL) { @@ -197,7 +199,7 @@ parse_range(const char *arg, uint8_t *min, uint8_t *max, uint8_t *inc) } else goto err_range; - token = strtok(NULL, ":"); + token = strtok_r(NULL, ":", &sp); /* Parse increment value */ if (token != NULL) { @@ -211,7 +213,7 @@ parse_range(const char *arg, uint8_t *min, uint8_t *max, uint8_t *inc) } else goto err_range; - token = strtok(NULL, ":"); + token = strtok_r(NULL, ":", &sp); /* Parse maximum value */ if (token != NULL) { @@ -225,7 +227,7 @@ parse_range(const char *arg, uint8_t *min, uint8_t *max, uint8_t *inc) } else goto err_range; - if (strtok(NULL, ":") != NULL) + if (strtok_r(NULL, ":", &sp) != NULL) goto err_range; free(copy_arg); @@ -244,6 +246,7 @@ parse_list(const char *arg, uint8_t *list, uint8_t *min, uint8_t *max) uint8_t count = 0; uint32_t temp_min; uint32_t temp_max; + char *sp = NULL; char *copy_arg = strdup(arg); @@ -251,7 +254,7 @@ parse_list(const char *arg, uint8_t *list, uint8_t *min, uint8_t *max) return -1; errno = 0; - token = strtok(copy_arg, ","); + token = strtok_r(copy_arg, ",", &sp); /* Parse first value */ if (token != NULL) { @@ -266,7 +269,7 @@ parse_list(const char *arg, uint8_t *list, uint8_t *min, uint8_t *max) } else goto err_list; - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); while (token != NULL) { if (count == MAX_LIST) { @@ -288,7 +291,7 @@ parse_list(const char *arg, uint8_t *list, uint8_t *min, uint8_t *max) if (number > temp_max) temp_max = number; - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); } if (min) From patchwork Fri Nov 8 11:03:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148155 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id ACA9A45CA6; Fri, 8 Nov 2024 12:16:05 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3115043360; Fri, 8 Nov 2024 12:15:46 +0100 (CET) Received: from szxga06-in.huawei.com (szxga06-in.huawei.com [45.249.212.32]) by mails.dpdk.org (Postfix) with ESMTP id 791074334C for ; Fri, 8 Nov 2024 12:15:42 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.44]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4XlGZv324Pz1ypKZ; Fri, 8 Nov 2024 19:15:51 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id DC9161402CE; Fri, 8 Nov 2024 19:15:40 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:40 +0800 From: Jie Hai To: , , , Brian Dooley , Pablo de Lara , Sergio Gonzalez Monroy , Declan Doherty , Piotr Azarewicz , Michal Kobylinski , Marcin Kerlin , Slawomir Mrozowicz CC: , , , Subject: [PATCH v5 04/25] app/crypto-perf: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:43 +0800 Message-ID: <20241108110404.18317-5-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: f6cefe253cc8 ("app/crypto-perf: add range/list of sizes") Fixes: f8be1786b1b8 ("app/crypto-perf: introduce performance test application") Signed-off-by: Jie Hai Acked-by: Chengwen Feng Acked-by: Ciara Power --- app/test-crypto-perf/cperf_options_parsing.c | 17 ++++++++++------- .../cperf_test_vector_parsing.c | 11 +++++++---- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/test-crypto-perf/cperf_options_parsing.c b/app/test-crypto-perf/cperf_options_parsing.c index 8abee2d68826..07130e2c27f7 100644 --- a/app/test-crypto-perf/cperf_options_parsing.c +++ b/app/test-crypto-perf/cperf_options_parsing.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "cperf_options.h" #include "cperf_test_common.h" @@ -166,6 +167,7 @@ parse_range(const char *arg, uint32_t *min, uint32_t *max, uint32_t *inc) { char *token; uint32_t number; + char *sp = NULL; char *copy_arg = strdup(arg); @@ -173,7 +175,7 @@ parse_range(const char *arg, uint32_t *min, uint32_t *max, uint32_t *inc) return -1; errno = 0; - token = strtok(copy_arg, ":"); + token = strtok_r(copy_arg, ":", &sp); /* Parse minimum value */ if (token != NULL) { @@ -187,7 +189,7 @@ parse_range(const char *arg, uint32_t *min, uint32_t *max, uint32_t *inc) } else goto err_range; - token = strtok(NULL, ":"); + token = strtok_r(NULL, ":", &sp); /* Parse increment value */ if (token != NULL) { @@ -201,7 +203,7 @@ parse_range(const char *arg, uint32_t *min, uint32_t *max, uint32_t *inc) } else goto err_range; - token = strtok(NULL, ":"); + token = strtok_r(NULL, ":", &sp); /* Parse maximum value */ if (token != NULL) { @@ -216,7 +218,7 @@ parse_range(const char *arg, uint32_t *min, uint32_t *max, uint32_t *inc) } else goto err_range; - if (strtok(NULL, ":") != NULL) + if (strtok_r(NULL, ":", &sp) != NULL) goto err_range; free(copy_arg); @@ -235,6 +237,7 @@ parse_list(const char *arg, uint32_t *list, uint32_t *min, uint32_t *max) uint8_t count = 0; uint32_t temp_min; uint32_t temp_max; + char *sp = NULL; char *copy_arg = strdup(arg); @@ -242,7 +245,7 @@ parse_list(const char *arg, uint32_t *list, uint32_t *min, uint32_t *max) return -1; errno = 0; - token = strtok(copy_arg, ","); + token = strtok_r(copy_arg, ",", &sp); /* Parse first value */ if (token != NULL) { @@ -258,7 +261,7 @@ parse_list(const char *arg, uint32_t *list, uint32_t *min, uint32_t *max) } else goto err_list; - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); while (token != NULL) { if (count == MAX_LIST) { @@ -280,7 +283,7 @@ parse_list(const char *arg, uint32_t *list, uint32_t *min, uint32_t *max) if (number > temp_max) temp_max = number; - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); } if (min) diff --git a/app/test-crypto-perf/cperf_test_vector_parsing.c b/app/test-crypto-perf/cperf_test_vector_parsing.c index 737d61d4af6b..b1cc1ef3c91d 100644 --- a/app/test-crypto-perf/cperf_test_vector_parsing.c +++ b/app/test-crypto-perf/cperf_test_vector_parsing.c @@ -9,6 +9,7 @@ #include #include +#include #include "cperf_options.h" #include "cperf_test_vectors.h" @@ -220,8 +221,9 @@ parse_values(char *tokens, uint8_t **data, uint32_t *data_length) uint8_t *values, *values_resized; char *tok, *error = NULL; + char *sp = NULL; - tok = strtok(tokens, CPERF_VALUE_DELIMITER); + tok = strtok_r(tokens, CPERF_VALUE_DELIMITER, &sp); if (tok == NULL) return -1; @@ -252,7 +254,7 @@ parse_values(char *tokens, uint8_t **data, uint32_t *data_length) return -1; } - tok = strtok(NULL, CPERF_VALUE_DELIMITER); + tok = strtok_r(NULL, CPERF_VALUE_DELIMITER, &sp); if (tok == NULL) break; @@ -283,6 +285,7 @@ parse_entry(char *entry, struct cperf_test_vector *vector, uint8_t *data = NULL; char *token, *key_token; + char *sp = NULL; if (entry == NULL) { printf("Expected entry value\n"); @@ -290,10 +293,10 @@ parse_entry(char *entry, struct cperf_test_vector *vector, } /* get key */ - token = strtok(entry, CPERF_ENTRY_DELIMITER); + token = strtok_r(entry, CPERF_ENTRY_DELIMITER, &sp); key_token = token; /* get values for key */ - token = strtok(NULL, CPERF_ENTRY_DELIMITER); + token = strtok_r(NULL, CPERF_ENTRY_DELIMITER, &sp); if (key_token == NULL || token == NULL) { printf("Expected 'key = values' but was '%.40s'..\n", entry); From patchwork Fri Nov 8 11:03:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148156 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3E54445CA6; Fri, 8 Nov 2024 12:16:12 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7576043361; Fri, 8 Nov 2024 12:15:47 +0100 (CET) Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by mails.dpdk.org (Postfix) with ESMTP id CE4C343355 for ; Fri, 8 Nov 2024 12:15:42 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.88.214]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4XlGTM1f4Mz1JCMg; Fri, 8 Nov 2024 19:11:03 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 7E60A1A016C; Fri, 8 Nov 2024 19:15:41 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:40 +0800 From: Jie Hai To: , , , Cheng Jiang , Chengwen Feng , Chenbo Xia , Jiayu Hu , =?utf-8?q?Morten_Br=C3=B8rup?= , Yuan Wang CC: , , Subject: [PATCH v5 05/25] app/dma-perf: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:44 +0800 Message-ID: <20241108110404.18317-6-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 623dc9364dc6 ("app/dma-perf: introduce DMA performance test") Signed-off-by: Jie Hai Acked-by: Chengwen Feng --- app/test-dma-perf/main.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/test-dma-perf/main.c b/app/test-dma-perf/main.c index 18219918ccab..25d8397ebe5c 100644 --- a/app/test-dma-perf/main.c +++ b/app/test-dma-perf/main.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "main.h" @@ -183,6 +184,7 @@ parse_lcore(struct test_configure *test_case, const char *value) uint16_t len; char *input; struct lcore_dma_map_t *lcore_dma_map; + char *sp = NULL; if (test_case == NULL || value == NULL) return -1; @@ -194,7 +196,7 @@ parse_lcore(struct test_configure *test_case, const char *value) memset(lcore_dma_map, 0, sizeof(struct lcore_dma_map_t)); - char *token = strtok(input, ", "); + char *token = strtok_r(input, ", ", &sp); while (token != NULL) { if (lcore_dma_map->cnt >= MAX_WORKER_NB) { free(input); @@ -204,7 +206,7 @@ parse_lcore(struct test_configure *test_case, const char *value) uint16_t lcore_id = atoi(token); lcore_dma_map->lcores[lcore_dma_map->cnt++] = lcore_id; - token = strtok(NULL, ", "); + token = strtok_r(NULL, ", ", &sp); } free(input); @@ -220,6 +222,7 @@ parse_lcore_dma(struct test_configure *test_case, const char *value) char *start, *end, *substr; uint16_t lcore_id; int ret = 0; + char *sp = NULL; if (test_case == NULL || value == NULL) return -1; @@ -237,7 +240,7 @@ parse_lcore_dma(struct test_configure *test_case, const char *value) goto out; } - substr = strtok(addrs, ","); + substr = strtok_r(addrs, ",", &sp); if (substr == NULL) { fprintf(stderr, "No input DMA address\n"); ret = -1; @@ -279,7 +282,7 @@ parse_lcore_dma(struct test_configure *test_case, const char *value) strlcpy(lcore_dma_map->dma_names[lcore_dma_map->cnt], ptrs[1], RTE_DEV_NAME_MAX_LEN); lcore_dma_map->cnt++; - substr = strtok(NULL, ","); + substr = strtok_r(NULL, ",", &sp); } while (substr != NULL); out: @@ -625,6 +628,7 @@ main(int argc, char *argv[]) char *rst_path_ptr = NULL; char rst_path[PATH_MAX]; int new_argc; + char *sp = NULL; memset(args, 0, sizeof(args)); @@ -643,7 +647,7 @@ main(int argc, char *argv[]) } if (rst_path_ptr == NULL) { strlcpy(rst_path, cfg_path_ptr, PATH_MAX); - char *token = strtok(basename(rst_path), "."); + char *token = strtok_r(basename(rst_path), ".", &sp); if (token == NULL) { printf("Config file error.\n"); return -1; From patchwork Fri Nov 8 11:03:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148157 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id ED37B45CA6; Fri, 8 Nov 2024 12:16:18 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id ADE9E43367; Fri, 8 Nov 2024 12:15:48 +0100 (CET) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id 64F814334C for ; Fri, 8 Nov 2024 12:15:43 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.162.112]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4XlGXk3dg2z2FbmQ; Fri, 8 Nov 2024 19:13:58 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 2B5FC14022E; Fri, 8 Nov 2024 19:15:42 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:41 +0800 From: Jie Hai To: , , , Wisam Jaddo , Alexander Kozyrev , Rongwei Liu , Jiawei Wang , Haifei Luo , Sean Zhang CC: , , , Subject: [PATCH v5 06/25] app/flow-perf: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:45 +0800 Message-ID: <20241108110404.18317-7-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 0c8f1f4ab90e ("app/flow-perf: support raw encap/decap actions") Fixes: 7f37f0936a19 ("app/flow-perf: support meter policy API") Fixes: 80a323319745 ("app/flow-perf: add destination ports parameter") Signed-off-by: Jie Hai Acked-by: Chengwen Feng --- app/test-flow-perf/main.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c index 07ddfe0e46df..7e68146c16d7 100644 --- a/app/test-flow-perf/main.c +++ b/app/test-flow-perf/main.c @@ -36,6 +36,7 @@ #include #include #include +#include #include "config.h" #include "actions_gen.h" @@ -602,6 +603,7 @@ read_meter_policy(char *prog, char *arg) { char *token; size_t i, j, k; + char *sp = NULL; j = 0; k = 0; @@ -612,9 +614,9 @@ read_meter_policy(char *prog, char *arg) token = strsep(&arg, ":\0"); } j = 0; - token = strtok(actions_str[0], ",\0"); + token = strtok_r(actions_str[0], ",\0", &sp); while (token == NULL && j < RTE_COLORS - 1) - token = strtok(actions_str[++j], ",\0"); + token = strtok_r(actions_str[++j], ",\0", &sp); while (j < RTE_COLORS && token != NULL) { for (i = 0; i < RTE_DIM(flow_options); i++) { if (!strcmp(token, flow_options[i].str)) { @@ -628,9 +630,9 @@ read_meter_policy(char *prog, char *arg) usage(prog); rte_exit(EXIT_SUCCESS, "Invalid colored actions\n"); } - token = strtok(NULL, ",\0"); + token = strtok_r(NULL, ",\0", &sp); while (!token && j < RTE_COLORS - 1) { - token = strtok(actions_str[++j], ",\0"); + token = strtok_r(actions_str[++j], ",\0", &sp); k = 0; } } @@ -641,6 +643,7 @@ args_parse(int argc, char **argv) { uint64_t pm, seed; uint64_t hp_conf; + char *sp = NULL; char **argvopt; uint32_t prio; char *token; @@ -804,7 +807,7 @@ args_parse(int argc, char **argv) RTE_FLOW_ACTION_TYPE_RAW_ENCAP ); - token = strtok(optarg, ","); + token = strtok_r(optarg, ",", &sp); while (token != NULL) { for (i = 0; i < RTE_DIM(flow_options); i++) { if (strcmp(flow_options[i].str, token) == 0) { @@ -817,7 +820,7 @@ args_parse(int argc, char **argv) rte_exit(EXIT_FAILURE, "Invalid encap item: %s\n", token); } - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); } printf(" / "); } @@ -828,7 +831,7 @@ args_parse(int argc, char **argv) RTE_FLOW_ACTION_TYPE_RAW_DECAP ); - token = strtok(optarg, ","); + token = strtok_r(optarg, ",", &sp); while (token != NULL) { for (i = 0; i < RTE_DIM(flow_options); i++) { if (strcmp(flow_options[i].str, token) == 0) { @@ -841,7 +844,7 @@ args_parse(int argc, char **argv) rte_exit(EXIT_FAILURE, "Invalid decap item %s\n", token); } - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); } printf(" / "); } @@ -910,10 +913,10 @@ args_parse(int argc, char **argv) uint16_t port_idx = 0; char *token; - token = strtok(optarg, ","); + token = strtok_r(optarg, ",", &sp); while (token != NULL) { dst_ports[port_idx++] = atoi(token); - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); } } if (strcmp(lgopts[opt_idx].name, "rxq") == 0) { From patchwork Fri Nov 8 11:03:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148158 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 688B945CA6; Fri, 8 Nov 2024 12:16:27 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5AC594337A; Fri, 8 Nov 2024 12:15:50 +0100 (CET) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id C15434335B for ; Fri, 8 Nov 2024 12:15:43 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.162.112]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4XlGXl0q8hz2FbsD; Fri, 8 Nov 2024 19:13:59 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id BEBD114022E; Fri, 8 Nov 2024 19:15:42 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:42 +0800 From: Jie Hai To: , , , Srikanth Yalavarthi , Anup Prabhu CC: , , , Subject: [PATCH v5 07/25] app/test-mldev: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:46 +0800 Message-ID: <20241108110404.18317-8-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: bbd272edcb14 ("app/mldev: add ordered inferences") Fixes: 28a4a819c850 ("app/mldev: improve checks for invalid options") Fixes: da6793390596 ("app/mldev: support inference validation") Fixes: f6661e6d9a3a ("app/mldev: validate model operations") Signed-off-by: Jie Hai Acked-by: Chengwen Feng --- app/test-mldev/ml_options.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/app/test-mldev/ml_options.c b/app/test-mldev/ml_options.c index 320f6325ae67..1033444de0e1 100644 --- a/app/test-mldev/ml_options.c +++ b/app/test-mldev/ml_options.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "ml_common.h" #include "ml_test.h" @@ -76,12 +77,12 @@ ml_parse_models(struct ml_options *opt, const char *arg) { const char *delim = ","; char models[PATH_MAX]; - char *token; + char *token, *sp = NULL; int ret = 0; strlcpy(models, arg, PATH_MAX); - token = strtok(models, delim); + token = strtok_r(models, delim, &sp); while (token != NULL) { if (opt->nb_filelist >= ML_TEST_MAX_MODELS) { ml_err("Exceeded model count, max = %d\n", ML_TEST_MAX_MODELS); @@ -92,7 +93,7 @@ ml_parse_models(struct ml_options *opt, const char *arg) strlcpy(opt->filelist[opt->nb_filelist].model, token, PATH_MAX); opt->nb_filelist++; - token = strtok(NULL, delim); + token = strtok_r(NULL, delim, &sp); } if (opt->nb_filelist == 0) { @@ -108,7 +109,7 @@ ml_parse_filelist(struct ml_options *opt, const char *arg) { const char *delim = ","; char filelist[PATH_MAX]; - char *token; + char *token, *sp = NULL; if (opt->nb_filelist >= ML_TEST_MAX_MODELS) { ml_err("Exceeded filelist count, max = %d\n", ML_TEST_MAX_MODELS); @@ -118,7 +119,7 @@ ml_parse_filelist(struct ml_options *opt, const char *arg) strlcpy(filelist, arg, PATH_MAX); /* model */ - token = strtok(filelist, delim); + token = strtok_r(filelist, delim, &sp); if (token == NULL) { ml_err("Invalid filelist, model not specified = %s\n", arg); return -EINVAL; @@ -126,7 +127,7 @@ ml_parse_filelist(struct ml_options *opt, const char *arg) strlcpy(opt->filelist[opt->nb_filelist].model, token, PATH_MAX); /* input */ - token = strtok(NULL, delim); + token = strtok_r(NULL, delim, &sp); if (token == NULL) { ml_err("Invalid filelist, input not specified = %s\n", arg); return -EINVAL; @@ -134,7 +135,7 @@ ml_parse_filelist(struct ml_options *opt, const char *arg) strlcpy(opt->filelist[opt->nb_filelist].input, token, PATH_MAX); /* output */ - token = strtok(NULL, delim); + token = strtok_r(NULL, delim, &sp); if (token == NULL) { ml_err("Invalid filelist, output not specified = %s\n", arg); return -EINVAL; @@ -142,14 +143,14 @@ ml_parse_filelist(struct ml_options *opt, const char *arg) strlcpy(opt->filelist[opt->nb_filelist].output, token, PATH_MAX); /* reference - optional */ - token = strtok(NULL, delim); + token = strtok_r(NULL, delim, &sp); if (token != NULL) strlcpy(opt->filelist[opt->nb_filelist].reference, token, PATH_MAX); else memset(opt->filelist[opt->nb_filelist].reference, 0, PATH_MAX); /* check for extra tokens */ - token = strtok(NULL, delim); + token = strtok_r(NULL, delim, &sp); if (token != NULL) { ml_err("Invalid filelist. Entries > 4\n."); return -EINVAL; From patchwork Fri Nov 8 11:03:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148159 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 90DC045CA6; Fri, 8 Nov 2024 12:16:33 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9BC7343374; Fri, 8 Nov 2024 12:15:51 +0100 (CET) Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by mails.dpdk.org (Postfix) with ESMTP id B06D043348 for ; Fri, 8 Nov 2024 12:15:44 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.88.105]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4XlGYP6V6vzQsYj; Fri, 8 Nov 2024 19:14:33 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 3E5C2140391; Fri, 8 Nov 2024 19:15:43 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:42 +0800 From: Jie Hai To: , , , Vladimir Medvedkin CC: , , , Subject: [PATCH v5 08/25] app/test-fib: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:47 +0800 Message-ID: <20241108110404.18317-9-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 103809d032cd ("app/test-fib: add test application for FIB") Signed-off-by: Jie Hai Acked-by: Chengwen Feng --- app/test-fib/main.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/test-fib/main.c b/app/test-fib/main.c index 6479f48cdf6c..11810a1a80a8 100644 --- a/app/test-fib/main.c +++ b/app/test-fib/main.c @@ -17,6 +17,7 @@ #include #include #include +#include #define PRINT_USAGE_START "%s [EAL options] --\n" @@ -204,9 +205,9 @@ parse_distrib(uint8_t depth_lim, const uint32_t n) uint32_t nrpd[128 + 1] = {0}; /* number of routes per depth */ uint32_t n_routes; uint8_t depth, ratio, ratio_acc = 0; - char *in; + char *in, *sp = NULL; - in = strtok(distrib_string, ","); + in = strtok_r(distrib_string, ",", &sp); /*parse configures routes percentage ratios*/ while (in != NULL) { @@ -246,7 +247,7 @@ parse_distrib(uint8_t depth_lim, const uint32_t n) } /*number of configured depths in*/ - in = strtok(NULL, ","); + in = strtok_r(NULL, ",", &sp); } if (ratio_acc > 100) { @@ -522,10 +523,10 @@ parse_lookup(FILE *f, int af) int ret, i = 0; uint8_t *tbl = (uint8_t *)config.lookup_tbl; int step = (af == AF_INET) ? 4 : 16; - char *s; + char *s, *sp = NULL; while (fgets(line, sizeof(line), f) != NULL) { - s = strtok(line, " \t\n"); + s = strtok_r(line, " \t\n", &sp); if (s == NULL) return -EINVAL; ret = inet_pton(af, s, &tbl[i]); From patchwork Fri Nov 8 11:03:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148160 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1312F45CA6; Fri, 8 Nov 2024 12:16:40 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AE4334337F; Fri, 8 Nov 2024 12:15:52 +0100 (CET) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by mails.dpdk.org (Postfix) with ESMTP id 675B043360 for ; Fri, 8 Nov 2024 12:15:45 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.88.194]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4XlGWk0FbKzkWs1; Fri, 8 Nov 2024 19:13:06 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id CE6121400DC; Fri, 8 Nov 2024 19:15:43 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:43 +0800 From: Jie Hai To: , , , Chengwen Feng , Kevin Laatz , Bruce Richardson , Conor Walsh , Sean Morrissey CC: , , Subject: [PATCH v5 09/25] dmadev: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:48 +0800 Message-ID: <20241108110404.18317-10-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 39b5ab60df30 ("dmadev: add telemetry") Signed-off-by: Jie Hai Acked-by: Chengwen Feng Acked-by: Morten Brørup --- lib/dmadev/rte_dmadev.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c index 8bb7824aa129..eaf649e7d982 100644 --- a/lib/dmadev/rte_dmadev.c +++ b/lib/dmadev/rte_dmadev.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "rte_dmadev.h" #include "rte_dmadev_pmd.h" @@ -1016,7 +1017,7 @@ dmadev_handle_dev_stats(const char *cmd __rte_unused, struct rte_dma_info dma_info; struct rte_dma_stats dma_stats; int dev_id, ret, vchan_id; - char *end_param; + char *end_param, *sp = NULL; const char *vchan_param; if (params == NULL || strlen(params) == 0 || !isdigit(*params)) @@ -1035,7 +1036,7 @@ dmadev_handle_dev_stats(const char *cmd __rte_unused, if (dma_info.nb_vchans == 1 && *end_param == '\0') vchan_id = 0; else { - vchan_param = strtok(end_param, ","); + vchan_param = strtok_r(end_param, ",", &sp); if (!vchan_param || strlen(vchan_param) == 0 || !isdigit(*vchan_param)) return -EINVAL; From patchwork Fri Nov 8 11:03:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148161 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4316045CA6; Fri, 8 Nov 2024 12:16:46 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D3DF843387; Fri, 8 Nov 2024 12:15:53 +0100 (CET) Received: from szxga07-in.huawei.com (szxga07-in.huawei.com [45.249.212.35]) by mails.dpdk.org (Postfix) with ESMTP id 9AE5143362 for ; Fri, 8 Nov 2024 12:15:45 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.88.234]) by szxga07-in.huawei.com (SkyGuard) with ESMTP id 4XlGXm12LPz1SGHP; Fri, 8 Nov 2024 19:14:00 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 5D567140120; Fri, 8 Nov 2024 19:15:44 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:43 +0800 From: Jie Hai To: , , , Anatoly Burakov , Tyler Retzlaff , Amit Prakash Shukla CC: , , , Subject: [PATCH v5 10/25] eal: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:49 +0800 Message-ID: <20241108110404.18317-11-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 2054f31a1fcd ("mem: add memseg info in telemetry") Signed-off-by: Jie Hai Acked-by: Chengwen Feng Acked-by: Amit Prakash Shukla Acked-by: Morten Brørup --- lib/eal/common/eal_common_memory.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/eal/common/eal_common_memory.c b/lib/eal/common/eal_common_memory.c index a185e0b580c7..ace63313ea75 100644 --- a/lib/eal/common/eal_common_memory.c +++ b/lib/eal/common/eal_common_memory.c @@ -1275,22 +1275,22 @@ parse_params(const char *params, uint32_t *vals, size_t n_vals) char dlim[2] = ","; char *params_args; size_t count = 0; - char *token; + char *token, *sp = NULL; if (vals == NULL || params == NULL || strlen(params) == 0) return -1; - /* strtok expects char * and param is const char *. Hence on using + /* strtok_r expects char * and param is const char *. Hence on using * params as "const char *" compiler throws warning. */ params_args = strdup(params); if (params_args == NULL) return -1; - token = strtok(params_args, dlim); + token = strtok_r(params_args, dlim, &sp); while (token && isdigit(*token) && count < n_vals) { vals[count++] = strtoul(token, NULL, 10); - token = strtok(NULL, dlim); + token = strtok_r(NULL, dlim, &sp); } free(params_args); From patchwork Fri Nov 8 11:03:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148171 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B201145CA6; Fri, 8 Nov 2024 12:17:49 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B9F36433A6; Fri, 8 Nov 2024 12:16:06 +0100 (CET) Received: from szxga06-in.huawei.com (szxga06-in.huawei.com [45.249.212.32]) by mails.dpdk.org (Postfix) with ESMTP id B192C4337D for ; Fri, 8 Nov 2024 12:15:51 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.162.112]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4XlGZz3FV2z1yp8b; Fri, 8 Nov 2024 19:15:55 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id E731714022E; Fri, 8 Nov 2024 19:15:44 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:44 +0800 From: Jie Hai To: , , , Andrew Rybchenko CC: , , , Subject: [PATCH v5 11/25] ethdev: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:50 +0800 Message-ID: <20241108110404.18317-12-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: f38f62650f7b ("ethdev: add Rx queue telemetry query") Fixes: 9e7533aeb80a ("ethdev: add telemetry command for TM level capabilities") Signed-off-by: Jie Hai Acked-by: Chengwen Feng Reviewed-by: Andrew Rybchenko Acked-by: Morten Brørup --- lib/ethdev/rte_ethdev_telemetry.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/ethdev/rte_ethdev_telemetry.c b/lib/ethdev/rte_ethdev_telemetry.c index 5e6c4172d3be..e589032dd368 100644 --- a/lib/ethdev/rte_ethdev_telemetry.c +++ b/lib/ethdev/rte_ethdev_telemetry.c @@ -7,6 +7,7 @@ #include #include +#include #include "rte_ethdev.h" #include "ethdev_driver.h" @@ -477,6 +478,7 @@ ethdev_parse_queue_params(const char *params, bool is_rx, const char *qid_param; uint16_t nb_queues; char *end_param; + char *sp = NULL; uint64_t qid; int ret; @@ -489,7 +491,7 @@ ethdev_parse_queue_params(const char *params, bool is_rx, if (nb_queues == 1 && *end_param == '\0') qid = 0; else { - qid_param = strtok(end_param, ","); + qid_param = strtok_r(end_param, ",", &sp); if (!qid_param || strlen(qid_param) == 0 || !isdigit(*qid_param)) return -EINVAL; @@ -1221,9 +1223,10 @@ static int eth_dev_parse_tm_params(char *params, uint32_t *result) { const char *splited_param; + char *sp = NULL; uint64_t ret; - splited_param = strtok(params, ","); + splited_param = strtok_r(params, ",", &sp); if (!splited_param || strlen(splited_param) == 0 || !isdigit(*splited_param)) return -EINVAL; @@ -1510,13 +1513,14 @@ eth_dev_handle_port_regs(const char *cmd __rte_unused, { char *filter, *end_param; uint16_t port_id; + char *sp = NULL; int ret; ret = eth_dev_parse_port_params(params, &port_id, &end_param, true); if (ret != 0) return ret; - filter = strtok(end_param, ","); + filter = strtok_r(end_param, ",", &sp); if (filter != NULL && strlen(filter) == 0) filter = NULL; From patchwork Fri Nov 8 11:03:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148164 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 81FCE45CA6; Fri, 8 Nov 2024 12:17:06 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8F6B643389; Fri, 8 Nov 2024 12:15:57 +0100 (CET) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by mails.dpdk.org (Postfix) with ESMTP id 535C843364 for ; Fri, 8 Nov 2024 12:15:48 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.252]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4XlGWl4x2KzkWrq; Fri, 8 Nov 2024 19:13:07 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 79310180AEA; Fri, 8 Nov 2024 19:15:45 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:44 +0800 From: Jie Hai To: , , , Naga Harish K S V , Jerin Jacob CC: , , , Subject: [PATCH v5 12/25] eventdev: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:51 +0800 Message-ID: <20241108110404.18317-13-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Signed-off-by: Jie Hai Acked-by: Chengwen Feng Acked-by: Morten Brørup --- lib/eventdev/rte_event_eth_rx_adapter.c | 39 +++++++++++++------------ lib/eventdev/rte_eventdev.c | 18 ++++++------ 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c index 3ee20d95f372..96af9c0c8b65 100644 --- a/lib/eventdev/rte_event_eth_rx_adapter.c +++ b/lib/eventdev/rte_event_eth_rx_adapter.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "rte_eventdev.h" #include "eventdev_pmd.h" @@ -3651,7 +3652,7 @@ handle_rxa_get_queue_conf(const char *cmd __rte_unused, uint8_t rx_adapter_id; uint16_t rx_queue_id; int eth_dev_id, ret = -1; - char *token, *l_params; + char *token, *l_params, *sp; struct rte_event_eth_rx_adapter_queue_conf queue_conf; if (params == NULL || strlen(params) == 0 || !isdigit(*params)) @@ -3661,19 +3662,19 @@ handle_rxa_get_queue_conf(const char *cmd __rte_unused, l_params = strdup(params); if (l_params == NULL) return -ENOMEM; - token = strtok(l_params, ","); + token = strtok_r(l_params, ",", &sp); RTE_EVENT_ETH_RX_ADAPTER_TOKEN_VALID_OR_GOTO_ERR_RET(token, -1); rx_adapter_id = strtoul(token, NULL, 10); RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_GOTO_ERR_RET(rx_adapter_id, -EINVAL); - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); RTE_EVENT_ETH_RX_ADAPTER_TOKEN_VALID_OR_GOTO_ERR_RET(token, -1); /* Get device ID from parameter string */ eth_dev_id = strtoul(token, NULL, 10); RTE_EVENT_ETH_RX_ADAPTER_PORTID_VALID_OR_GOTO_ERR_RET(eth_dev_id, -EINVAL); - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); RTE_EVENT_ETH_RX_ADAPTER_TOKEN_VALID_OR_GOTO_ERR_RET(token, -1); /* Get Rx queue ID from parameter string */ @@ -3684,7 +3685,7 @@ handle_rxa_get_queue_conf(const char *cmd __rte_unused, goto error; } - token = strtok(NULL, "\0"); + token = strtok_r(NULL, "\0", &sp); if (token != NULL) RTE_EDEV_LOG_ERR("Extra parameters passed to eventdev" " telemetry command, ignoring"); @@ -3723,7 +3724,7 @@ handle_rxa_get_queue_stats(const char *cmd __rte_unused, uint8_t rx_adapter_id; uint16_t rx_queue_id; int eth_dev_id, ret = -1; - char *token, *l_params; + char *token, *l_params, *sp = NULL; struct rte_event_eth_rx_adapter_queue_stats q_stats; if (params == NULL || strlen(params) == 0 || !isdigit(*params)) @@ -3733,19 +3734,19 @@ handle_rxa_get_queue_stats(const char *cmd __rte_unused, l_params = strdup(params); if (l_params == NULL) return -ENOMEM; - token = strtok(l_params, ","); + token = strtok_r(l_params, ",", &sp); RTE_EVENT_ETH_RX_ADAPTER_TOKEN_VALID_OR_GOTO_ERR_RET(token, -1); rx_adapter_id = strtoul(token, NULL, 10); RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_GOTO_ERR_RET(rx_adapter_id, -EINVAL); - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); RTE_EVENT_ETH_RX_ADAPTER_TOKEN_VALID_OR_GOTO_ERR_RET(token, -1); /* Get device ID from parameter string */ eth_dev_id = strtoul(token, NULL, 10); RTE_EVENT_ETH_RX_ADAPTER_PORTID_VALID_OR_GOTO_ERR_RET(eth_dev_id, -EINVAL); - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); RTE_EVENT_ETH_RX_ADAPTER_TOKEN_VALID_OR_GOTO_ERR_RET(token, -1); /* Get Rx queue ID from parameter string */ @@ -3756,7 +3757,7 @@ handle_rxa_get_queue_stats(const char *cmd __rte_unused, goto error; } - token = strtok(NULL, "\0"); + token = strtok_r(NULL, "\0", &sp); if (token != NULL) RTE_EDEV_LOG_ERR("Extra parameters passed to eventdev" " telemetry command, ignoring"); @@ -3794,7 +3795,7 @@ handle_rxa_queue_stats_reset(const char *cmd __rte_unused, uint8_t rx_adapter_id; uint16_t rx_queue_id; int eth_dev_id, ret = -1; - char *token, *l_params; + char *token, *l_params, *sp = NULL; if (params == NULL || strlen(params) == 0 || !isdigit(*params)) return -1; @@ -3803,19 +3804,19 @@ handle_rxa_queue_stats_reset(const char *cmd __rte_unused, l_params = strdup(params); if (l_params == NULL) return -ENOMEM; - token = strtok(l_params, ","); + token = strtok_r(l_params, ",", &sp); RTE_EVENT_ETH_RX_ADAPTER_TOKEN_VALID_OR_GOTO_ERR_RET(token, -1); rx_adapter_id = strtoul(token, NULL, 10); RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_GOTO_ERR_RET(rx_adapter_id, -EINVAL); - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); RTE_EVENT_ETH_RX_ADAPTER_TOKEN_VALID_OR_GOTO_ERR_RET(token, -1); /* Get device ID from parameter string */ eth_dev_id = strtoul(token, NULL, 10); RTE_EVENT_ETH_RX_ADAPTER_PORTID_VALID_OR_GOTO_ERR_RET(eth_dev_id, -EINVAL); - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); RTE_EVENT_ETH_RX_ADAPTER_TOKEN_VALID_OR_GOTO_ERR_RET(token, -1); /* Get Rx queue ID from parameter string */ @@ -3826,7 +3827,7 @@ handle_rxa_queue_stats_reset(const char *cmd __rte_unused, goto error; } - token = strtok(NULL, "\0"); + token = strtok_r(NULL, "\0", &sp); if (token != NULL) RTE_EDEV_LOG_ERR("Extra parameters passed to eventdev" " telemetry command, ignoring"); @@ -3855,7 +3856,7 @@ handle_rxa_instance_get(const char *cmd __rte_unused, uint8_t instance_id; uint16_t rx_queue_id; int eth_dev_id, ret = -1; - char *token, *l_params; + char *token, *l_params, *sp = NULL; if (params == NULL || strlen(params) == 0 || !isdigit(*params)) return -1; @@ -3863,14 +3864,14 @@ handle_rxa_instance_get(const char *cmd __rte_unused, l_params = strdup(params); if (l_params == NULL) return -ENOMEM; - token = strtok(l_params, ","); + token = strtok_r(l_params, ",", &sp); RTE_EVENT_ETH_RX_ADAPTER_TOKEN_VALID_OR_GOTO_ERR_RET(token, -1); /* Get device ID from parameter string */ eth_dev_id = strtoul(token, NULL, 10); RTE_EVENT_ETH_RX_ADAPTER_PORTID_VALID_OR_GOTO_ERR_RET(eth_dev_id, -EINVAL); - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); RTE_EVENT_ETH_RX_ADAPTER_TOKEN_VALID_OR_GOTO_ERR_RET(token, -1); /* Get Rx queue ID from parameter string */ @@ -3881,7 +3882,7 @@ handle_rxa_instance_get(const char *cmd __rte_unused, goto error; } - token = strtok(NULL, "\0"); + token = strtok_r(NULL, "\0", &sp); if (token != NULL) RTE_EDEV_LOG_ERR("Extra parameters passed to eventdev" " telemetry command, ignoring"); diff --git a/lib/eventdev/rte_eventdev.c b/lib/eventdev/rte_eventdev.c index ca295c87c47d..d3dacffdfab2 100644 --- a/lib/eventdev/rte_eventdev.c +++ b/lib/eventdev/rte_eventdev.c @@ -1787,7 +1787,7 @@ handle_queue_links(const char *cmd __rte_unused, struct rte_tel_data *d) { int i, ret, port_id = 0; - char *end_param; + char *end_param, *sp = NULL; uint8_t dev_id; uint8_t queues[RTE_EVENT_MAX_QUEUES_PER_DEV]; uint8_t priorities[RTE_EVENT_MAX_QUEUES_PER_DEV]; @@ -1800,12 +1800,12 @@ handle_queue_links(const char *cmd __rte_unused, dev_id = strtoul(params, &end_param, 10); RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL); - p_param = strtok(end_param, ","); + p_param = strtok_r(end_param, ",", &sp); if (p_param == NULL || strlen(p_param) == 0 || !isdigit(*p_param)) return -1; port_id = strtoul(p_param, &end_param, 10); - p_param = strtok(NULL, "\0"); + p_param = strtok_r(NULL, "\0", &sp); if (p_param != NULL) RTE_EDEV_LOG_DEBUG( "Extra parameters passed to eventdev telemetry command, ignoring"); @@ -1925,7 +1925,7 @@ handle_port_xstats(const char *cmd __rte_unused, int dev_id; int port_queue_id = 0; enum rte_event_dev_xstats_mode mode; - char *end_param; + char *end_param, *sp = NULL; const char *p_param; if (params == NULL || strlen(params) == 0 || !isdigit(*params)) @@ -1935,7 +1935,7 @@ handle_port_xstats(const char *cmd __rte_unused, dev_id = strtoul(params, &end_param, 10); RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL); - p_param = strtok(end_param, ","); + p_param = strtok_r(end_param, ",", &sp); mode = RTE_EVENT_DEV_XSTATS_PORT; if (p_param == NULL || strlen(p_param) == 0 || !isdigit(*p_param)) @@ -1943,7 +1943,7 @@ handle_port_xstats(const char *cmd __rte_unused, port_queue_id = strtoul(p_param, &end_param, 10); - p_param = strtok(NULL, "\0"); + p_param = strtok_r(NULL, "\0", &sp); if (p_param != NULL) RTE_EDEV_LOG_DEBUG( "Extra parameters passed to eventdev telemetry command, ignoring"); @@ -1959,7 +1959,7 @@ handle_queue_xstats(const char *cmd __rte_unused, int dev_id; int port_queue_id = 0; enum rte_event_dev_xstats_mode mode; - char *end_param; + char *end_param, *sp = NULL; const char *p_param; if (params == NULL || strlen(params) == 0 || !isdigit(*params)) @@ -1969,7 +1969,7 @@ handle_queue_xstats(const char *cmd __rte_unused, dev_id = strtoul(params, &end_param, 10); RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL); - p_param = strtok(end_param, ","); + p_param = strtok_r(end_param, ",", &sp); mode = RTE_EVENT_DEV_XSTATS_QUEUE; if (p_param == NULL || strlen(p_param) == 0 || !isdigit(*p_param)) @@ -1977,7 +1977,7 @@ handle_queue_xstats(const char *cmd __rte_unused, port_queue_id = strtoul(p_param, &end_param, 10); - p_param = strtok(NULL, "\0"); + p_param = strtok_r(NULL, "\0", &sp); if (p_param != NULL) RTE_EDEV_LOG_DEBUG( "Extra parameters passed to eventdev telemetry command, ignoring"); From patchwork Fri Nov 8 11:03:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148162 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C670645CA6; Fri, 8 Nov 2024 12:16:53 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 163164338B; Fri, 8 Nov 2024 12:15:55 +0100 (CET) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id 2DFA643367 for ; Fri, 8 Nov 2024 12:15:47 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.88.163]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4XlGYS6qrqz20sv7; Fri, 8 Nov 2024 19:14:36 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 1552218002B; Fri, 8 Nov 2024 19:15:46 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:45 +0800 From: Jie Hai To: , , , Akhil Goyal , Anoob Joseph , Gowrishankar Muthukrishnan CC: , , , Subject: [PATCH v5 13/25] security: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:52 +0800 Message-ID: <20241108110404.18317-14-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 259ca6d1617f ("security: add telemetry endpoint for capabilities") Signed-off-by: Jie Hai Acked-by: Chengwen Feng Acked-by: Morten Brørup --- lib/security/rte_security.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/security/rte_security.c b/lib/security/rte_security.c index e5c862f5f570..669888ef0807 100644 --- a/lib/security/rte_security.c +++ b/lib/security/rte_security.c @@ -11,6 +11,7 @@ #include #include #include +#include #include "rte_security.h" #include "rte_security_driver.h" @@ -497,13 +498,14 @@ security_handle_cryptodev_crypto_caps(const char *cmd __rte_unused, const char * int dev_id, capa_id; int crypto_caps_n; char *end_param; + char *sp = NULL; int rc; if (!params || strlen(params) == 0 || !isdigit(*params)) return -EINVAL; dev_id = strtoul(params, &end_param, 0); - capa_param = strtok(end_param, ","); + capa_param = strtok_r(end_param, ",", &sp); if (!capa_param || strlen(capa_param) == 0 || !isdigit(*capa_param)) return -EINVAL; From patchwork Fri Nov 8 11:03:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148163 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8625C45CA6; Fri, 8 Nov 2024 12:17:00 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5EDFC43391; Fri, 8 Nov 2024 12:15:56 +0100 (CET) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id 9C96E4336C for ; Fri, 8 Nov 2024 12:15:47 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.17]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4XlGXp6z7Yz2FbmQ; Fri, 8 Nov 2024 19:14:02 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 9B2D21A0188; Fri, 8 Nov 2024 19:15:46 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:46 +0800 From: Jie Hai To: , , , Bruce Richardson , Keith Wiles , Ciara Power CC: , , , Subject: [PATCH v5 14/25] telemetry: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:53 +0800 Message-ID: <20241108110404.18317-15-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 6dd571fd07c3 ("telemetry: introduce new functionality") Cc: stable@dpdk.org Signed-off-by: Jie Hai Acked-by: Chengwen Feng Acked-by: Ciara Power Acked-by: Morten Brørup Acked-by: Stephen Hemminger --- lib/telemetry/telemetry.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c index 31a2c91c0657..cd1eddc5609c 100644 --- a/lib/telemetry/telemetry.c +++ b/lib/telemetry/telemetry.c @@ -19,6 +19,7 @@ #include #include #include +#include #include "rte_telemetry.h" #include "telemetry_json.h" @@ -398,6 +399,7 @@ static void * client_handler(void *sock_id) { int s = (int)(uintptr_t)sock_id; + char *sp = NULL; char buffer[1024]; char info_str[1024]; snprintf(info_str, sizeof(info_str), @@ -412,8 +414,8 @@ client_handler(void *sock_id) int bytes = read(s, buffer, sizeof(buffer) - 1); while (bytes > 0) { buffer[bytes] = 0; - const char *cmd = strtok(buffer, ","); - const char *param = strtok(NULL, "\0"); + const char *cmd = strtok_r(buffer, ",", &sp); + const char *param = strtok_r(NULL, "\0", &sp); struct cmd_callback cb = {.fn = unknown_command}; int i; From patchwork Fri Nov 8 11:03:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148168 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8AA9145CA6; Fri, 8 Nov 2024 12:17:31 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C7834433A1; Fri, 8 Nov 2024 12:16:02 +0100 (CET) Received: from szxga06-in.huawei.com (szxga06-in.huawei.com [45.249.212.32]) by mails.dpdk.org (Postfix) with ESMTP id D60EE4336F for ; Fri, 8 Nov 2024 12:15:48 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.17]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4XlGb162BZz1ypKZ; Fri, 8 Nov 2024 19:15:57 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 4F5CA1A0188; Fri, 8 Nov 2024 19:15:47 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:46 +0800 From: Jie Hai To: , , , Hemant Agrawal , Sachin Saxena , Nipun Gupta , Shreyansh Jain , Santosh Shukla , Ferruh Yigit CC: , , , Subject: [PATCH v5 15/25] bus/fslmc: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:54 +0800 Message-ID: <20241108110404.18317-16-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 9ccb76b24c1d ("bus/fslmc: enable portal interrupt handling") Fixes: 828d51d8fc3e ("bus/fslmc: refactor scan and probe functions") Cc: stable@dpdk.org Signed-off-by: Jie Hai Acked-by: Chengwen Feng Acked-by: Sachin Saxena Acked-by: Morten Brørup --- drivers/bus/fslmc/fslmc_bus.c | 6 ++++-- drivers/bus/fslmc/portal/dpaa2_hw_dpio.c | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c index 097d6dca08b5..fe7eb26940cb 100644 --- a/drivers/bus/fslmc/fslmc_bus.c +++ b/drivers/bus/fslmc/fslmc_bus.c @@ -16,6 +16,7 @@ #include #include #include +#include #include "private.h" #include @@ -132,6 +133,7 @@ scan_one_fslmc_device(char *dev_name) { char *dup_dev_name, *t_ptr; struct rte_dpaa2_device *dev = NULL; + char *sp = NULL; int ret = -1; if (!dev_name) @@ -169,7 +171,7 @@ scan_one_fslmc_device(char *dev_name) } /* Parse the device name and ID */ - t_ptr = strtok(dup_dev_name, "."); + t_ptr = strtok_r(dup_dev_name, ".", &sp); if (!t_ptr) { DPAA2_BUS_ERR("Invalid device found: (%s)", dup_dev_name); ret = -EINVAL; @@ -200,7 +202,7 @@ scan_one_fslmc_device(char *dev_name) else dev->dev_type = DPAA2_UNKNOWN; - t_ptr = strtok(NULL, "."); + t_ptr = strtok_r(NULL, ".", &sp); if (!t_ptr) { DPAA2_BUS_ERR("Skipping invalid device (%s)", dup_dev_name); ret = 0; diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c index d8a98326d9de..8b863af010da 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -128,7 +129,7 @@ dpaa2_affine_dpio_intr_to_respective_core(int32_t dpio_id, int cpu_id) #define AFFINITY_LEN 128 uint32_t cpu_mask = 1; size_t len = 0; - char *temp = NULL, *token = NULL; + char *temp = NULL, *token = NULL, *sp = NULL; char string[STRING_LEN]; char smp_affinity[AFFINITY_LEN]; FILE *file; @@ -141,7 +142,7 @@ dpaa2_affine_dpio_intr_to_respective_core(int32_t dpio_id, int cpu_id) } while (getline(&temp, &len, file) != -1) { if ((strstr(temp, string)) != NULL) { - token = strtok(temp, ":"); + token = strtok_r(temp, ":", &sp); break; } } From patchwork Fri Nov 8 11:03:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148165 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9A4D645CA6; Fri, 8 Nov 2024 12:17:14 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6020D43392; Fri, 8 Nov 2024 12:15:59 +0100 (CET) Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by mails.dpdk.org (Postfix) with ESMTP id 06AD94336C for ; Fri, 8 Nov 2024 12:15:49 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.44]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4XlGTT4YDTz1JCLX; Fri, 8 Nov 2024 19:11:09 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id E91181402CE; Fri, 8 Nov 2024 19:15:47 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:47 +0800 From: Jie Hai To: , , , Nithin Dabilpuram , Kiran Kumar K , Sunil Kumar Kori , Satha Rao , Harman Kalra , Jerin Jacob , Gowrishankar Muthukrishnan CC: , , , Subject: [PATCH v5 16/25] common/cnxk: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:55 +0800 Message-ID: <20241108110404.18317-17-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: af75aac78978 ("common/cnxk: support telemetry for NIX") Cc: stable@dpdk.org Signed-off-by: Jie Hai Acked-by: Chengwen Feng Acked-by: Morten Brørup Acked-by: Stephen Hemminger --- drivers/common/cnxk/cnxk_telemetry_nix.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/common/cnxk/cnxk_telemetry_nix.c b/drivers/common/cnxk/cnxk_telemetry_nix.c index abeefafe1e19..a0b587c97c63 100644 --- a/drivers/common/cnxk/cnxk_telemetry_nix.c +++ b/drivers/common/cnxk/cnxk_telemetry_nix.c @@ -3,6 +3,7 @@ */ #include +#include #include "cnxk_telemetry.h" #include "roc_api.h" #include "roc_priv.h" @@ -1015,7 +1016,7 @@ cnxk_nix_tel_handle_info_x(const char *cmd, const char *params, struct plt_tel_data *d) { struct nix_tel_node *node; - char *name, *param; + char *name, *param, *sp = NULL; char buf[1024]; int rc = -1; @@ -1023,11 +1024,11 @@ cnxk_nix_tel_handle_info_x(const char *cmd, const char *params, goto exit; plt_strlcpy(buf, params, PCI_PRI_STR_SIZE + 1); - name = strtok(buf, ","); + name = strtok_r(buf, ",", &sp); if (name == NULL) goto exit; - param = strtok(NULL, "\0"); + param = strtok_r(NULL, "\0", &sp); node = nix_tel_node_get_by_pcidev_name(name); if (!node) @@ -1036,7 +1037,7 @@ cnxk_nix_tel_handle_info_x(const char *cmd, const char *params, plt_tel_data_start_dict(d); if (strstr(cmd, "rq")) { - char *tok = strtok(param, ","); + char *tok = strtok_r(param, ",", &sp); int rq; if (!tok) @@ -1052,7 +1053,7 @@ cnxk_nix_tel_handle_info_x(const char *cmd, const char *params, rc = cnxk_tel_nix_rq(node->rqs[rq], d); } else if (strstr(cmd, "cq")) { - char *tok = strtok(param, ","); + char *tok = strtok_r(param, ",", &sp); int cq; if (!tok) @@ -1068,7 +1069,7 @@ cnxk_nix_tel_handle_info_x(const char *cmd, const char *params, rc = cnxk_tel_nix_cq(node->cqs[cq], d); } else if (strstr(cmd, "sq")) { - char *tok = strtok(param, ","); + char *tok = strtok_r(param, ",", &sp); int sq; if (!tok) From patchwork Fri Nov 8 11:03:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148166 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 16FE745CA6; Fri, 8 Nov 2024 12:17:20 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 90ADA4339C; Fri, 8 Nov 2024 12:16:00 +0100 (CET) Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by mails.dpdk.org (Postfix) with ESMTP id 7D95343373 for ; Fri, 8 Nov 2024 12:15:49 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.88.234]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4XlGTV1CMdz1JCKy; Fri, 8 Nov 2024 19:11:10 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 7496E140120; Fri, 8 Nov 2024 19:15:48 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:47 +0800 From: Jie Hai To: , , , Pavan Nikhilesh , Shijith Thotton CC: , , , Subject: [PATCH v5 17/25] event/cnxk: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:56 +0800 Message-ID: <20241108110404.18317-18-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 8a3d58c189fd ("event/cnxk: add option to control timer adapters") Fixes: 8bdbae66b299 ("event/cnxk: add external clock support for timer") Signed-off-by: Jie Hai Acked-by: Chengwen Feng Acked-by: Morten Brørup --- drivers/event/cnxk/cnxk_eventdev.c | 11 +++++++---- drivers/event/cnxk/cnxk_tim_evdev.c | 12 +++++++----- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/drivers/event/cnxk/cnxk_eventdev.c b/drivers/event/cnxk/cnxk_eventdev.c index 84a55511a328..facbe7fa0928 100644 --- a/drivers/event/cnxk/cnxk_eventdev.c +++ b/drivers/event/cnxk/cnxk_eventdev.c @@ -2,6 +2,7 @@ * Copyright(C) 2021 Marvell. */ +#include #include "roc_npa.h" #include "cnxk_eventdev.h" @@ -482,7 +483,8 @@ parse_queue_param(char *value, void *opaque) struct cnxk_sso_qos queue_qos = {0}; uint16_t *val = (uint16_t *)&queue_qos; struct cnxk_sso_evdev *dev = opaque; - char *tok = strtok(value, "-"); + char *sp = NULL; + char *tok = strtok_r(value, "-", &sp); struct cnxk_sso_qos *old_ptr; if (!strlen(value)) @@ -490,7 +492,7 @@ parse_queue_param(char *value, void *opaque) while (tok != NULL) { *val = atoi(tok); - tok = strtok(NULL, "-"); + tok = strtok_r(NULL, "-", &sp); val++; } @@ -518,7 +520,8 @@ parse_stash_param(char *value, void *opaque) struct cnxk_sso_stash queue_stash = {0}; struct cnxk_sso_evdev *dev = opaque; struct cnxk_sso_stash *old_ptr; - char *tok = strtok(value, "|"); + char *sp = NULL; + char *tok = strtok_r(value, "|", &sp); uint16_t *val; if (!strlen(value)) @@ -527,7 +530,7 @@ parse_stash_param(char *value, void *opaque) val = (uint16_t *)&queue_stash; while (tok != NULL) { *val = atoi(tok); - tok = strtok(NULL, "|"); + tok = strtok_r(NULL, "|", &sp); val++; } diff --git a/drivers/event/cnxk/cnxk_tim_evdev.c b/drivers/event/cnxk/cnxk_tim_evdev.c index bba70646fa16..82d4a1878dd5 100644 --- a/drivers/event/cnxk/cnxk_tim_evdev.c +++ b/drivers/event/cnxk/cnxk_tim_evdev.c @@ -3,6 +3,7 @@ */ #include +#include #include "roc_npa.h" @@ -420,7 +421,8 @@ cnxk_tim_parse_ring_param(char *value, void *opaque) { struct cnxk_tim_evdev *dev = opaque; struct cnxk_tim_ctl ring_ctl = {0}; - char *tok = strtok(value, "-"); + char *sp = NULL; + char *tok = strtok_r(value, "-", &sp); struct cnxk_tim_ctl *old_ptr; uint16_t *val; @@ -431,7 +433,7 @@ cnxk_tim_parse_ring_param(char *value, void *opaque) while (tok != NULL) { *val = atoi(tok); - tok = strtok(NULL, "-"); + tok = strtok_r(NULL, "-", &sp); val++; } @@ -507,16 +509,16 @@ cnxk_tim_parse_clk_list(const char *value, void *opaque) ROC_TIM_CLK_SRC_INVALID}; struct cnxk_tim_evdev *dev = opaque; char *str = strdup(value); - char *tok; + char *tok, *sp = NULL; int i = 0; if (str == NULL || !strlen(str)) goto free; - tok = strtok(str, "-"); + tok = strtok_r(str, "-", &sp); while (tok != NULL && src[i] != ROC_TIM_CLK_SRC_INVALID) { dev->ext_clk_freq[src[i]] = strtoull(tok, NULL, 10); - tok = strtok(NULL, "-"); + tok = strtok_r(NULL, "-", &sp); i++; } From patchwork Fri Nov 8 11:03:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148167 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id ECD4F45CA6; Fri, 8 Nov 2024 12:17:25 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AC03743397; Fri, 8 Nov 2024 12:16:01 +0100 (CET) Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by mails.dpdk.org (Postfix) with ESMTP id 12FE743379 for ; Fri, 8 Nov 2024 12:15:50 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.44]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4XlGTV5H4Bz1JCMl; Fri, 8 Nov 2024 19:11:10 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 0E5891402CE; Fri, 8 Nov 2024 19:15:49 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:48 +0800 From: Jie Hai To: , , , Shepard Siegel , Ed Czeck , John Miller CC: , , , Subject: [PATCH v5 18/25] net/ark: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:57 +0800 Message-ID: <20241108110404.18317-19-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 9c7188a68d7b ("net/ark: provide API for hardware modules pktchkr and pktgen") Cc: stable@dpdk.org Signed-off-by: Jie Hai Acked-by: Chengwen Feng Acked-by: Morten Brørup --- drivers/net/ark/ark_pktchkr.c | 11 ++++++----- drivers/net/ark/ark_pktgen.c | 11 ++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/net/ark/ark_pktchkr.c b/drivers/net/ark/ark_pktchkr.c index e1f336c73c2a..2bb3dd7b5f36 100644 --- a/drivers/net/ark/ark_pktchkr.c +++ b/drivers/net/ark/ark_pktchkr.c @@ -7,6 +7,7 @@ #include #include +#include #include "ark_pktchkr.h" #include "ark_logs.h" @@ -359,14 +360,14 @@ set_arg(char *arg, char *val) void ark_pktchkr_parse(char *args) { - char *argv, *v; + char *argv, *v, *sp = NULL; const char toks[] = "=\n\t\v\f \r"; - argv = strtok(args, toks); - v = strtok(NULL, toks); + argv = strtok_r(args, toks, &sp); + v = strtok_r(NULL, toks, &sp); while (argv && v) { set_arg(argv, v); - argv = strtok(NULL, toks); - v = strtok(NULL, toks); + argv = strtok_r(NULL, toks, &sp); + v = strtok_r(NULL, toks, &sp); } } diff --git a/drivers/net/ark/ark_pktgen.c b/drivers/net/ark/ark_pktgen.c index 69ff7072b2ab..4765b8f0992a 100644 --- a/drivers/net/ark/ark_pktgen.c +++ b/drivers/net/ark/ark_pktgen.c @@ -8,6 +8,7 @@ #include #include #include +#include #include "ark_pktgen.h" #include "ark_logs.h" @@ -340,14 +341,14 @@ pmd_set_arg(char *arg, char *val) void ark_pktgen_parse(char *args) { - char *argv, *v; + char *argv, *v, *sp = NULL; const char toks[] = " =\n\t\v\f \r"; - argv = strtok(args, toks); - v = strtok(NULL, toks); + argv = strtok_r(args, toks, &sp); + v = strtok_r(NULL, toks, &sp); while (argv && v) { pmd_set_arg(argv, v); - argv = strtok(NULL, toks); - v = strtok(NULL, toks); + argv = strtok_r(NULL, toks, &sp); + v = strtok_r(NULL, toks, &sp); } } From patchwork Fri Nov 8 11:03:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148174 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 35B9C45CA6; Fri, 8 Nov 2024 12:18:05 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 374F8433C4; Fri, 8 Nov 2024 12:16:10 +0100 (CET) Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by mails.dpdk.org (Postfix) with ESMTP id E725C43371 for ; Fri, 8 Nov 2024 12:15:50 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.252]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4XlGX675Xpz1T9wQ; Fri, 8 Nov 2024 19:13:26 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 95E3B180AEA; Fri, 8 Nov 2024 19:15:49 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:48 +0800 From: Jie Hai To: , , , Jakub Palider , Tomasz Duszynski , Jerin Jacob CC: , , , Subject: [PATCH v5 19/25] raw/cnxk_gpio: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:58 +0800 Message-ID: <20241108110404.18317-20-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: ecc0dd455e9a ("raw/cnxk_gpio: add option to select subset of GPIOs") Cc: stable@dpdk.org Signed-off-by: Jie Hai Acked-by: Chengwen Feng Acked-by: Morten Brørup --- drivers/raw/cnxk_gpio/cnxk_gpio.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/raw/cnxk_gpio/cnxk_gpio.c b/drivers/raw/cnxk_gpio/cnxk_gpio.c index 329ac28a2736..e6408db824de 100644 --- a/drivers/raw/cnxk_gpio/cnxk_gpio.c +++ b/drivers/raw/cnxk_gpio/cnxk_gpio.c @@ -11,6 +11,7 @@ #include #include #include +#include #include @@ -192,7 +193,7 @@ static int cnxk_gpio_parse_allowlist(struct cnxk_gpiochip *gpiochip, char *allowlist) { int i, ret, val, queue = 0; - char *token; + char *token, *sp = NULL; int *list; list = rte_calloc(NULL, gpiochip->num_gpios, sizeof(*list), 0); @@ -210,7 +211,7 @@ cnxk_gpio_parse_allowlist(struct cnxk_gpiochip *gpiochip, char *allowlist) allowlist[strlen(allowlist) - 1] = ' '; /* quiesce -Wcast-qual */ - token = strtok((char *)(uintptr_t)allowlist, ","); + token = strtok_r((char *)(uintptr_t)allowlist, ",", &sp); do { errno = 0; val = strtol(token, NULL, 10); @@ -236,7 +237,7 @@ cnxk_gpio_parse_allowlist(struct cnxk_gpiochip *gpiochip, char *allowlist) } if (i == queue) list[queue++] = val; - } while ((token = strtok(NULL, ","))); + } while ((token = strtok_r(NULL, ",", &sp))); free(allowlist); gpiochip->allowlist = list; From patchwork Fri Nov 8 11:03:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148169 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EA49445CA6; Fri, 8 Nov 2024 12:17:38 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6678C433B0; Fri, 8 Nov 2024 12:16:04 +0100 (CET) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id 4D6704336A for ; Fri, 8 Nov 2024 12:15:52 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.88.163]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4XlGXt4B7Sz2FbmQ; Fri, 8 Nov 2024 19:14:06 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 3C22518002B; Fri, 8 Nov 2024 19:15:50 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:49 +0800 From: Jie Hai To: , , , Nithin Dabilpuram , Kiran Kumar K , Sunil Kumar Kori , Satha Rao , Harman Kalra , Chengwen Feng CC: , , Subject: [PATCH v5 20/25] net/cnxk: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:03:59 +0800 Message-ID: <20241108110404.18317-21-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: c8f91985331c ("raw/cnxk_gpio: replace strtok with reentrant version") Cc: stable@dpdk.org Signed-off-by: Jie Hai Acked-by: Chengwen Feng --- drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c b/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c index 86c2453c0983..0b766be11a17 100644 --- a/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c +++ b/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c @@ -5,6 +5,7 @@ #include #include +#include #include @@ -214,6 +215,7 @@ parse_params(const char *params, uint32_t *vals, size_t n_vals) char dlim[2] = ","; char *params_args; size_t count = 0; + char *sp = NULL; char *token; if (vals == NULL || params == NULL || strlen(params) == 0) @@ -226,10 +228,10 @@ parse_params(const char *params, uint32_t *vals, size_t n_vals) if (params_args == NULL) return -1; - token = strtok(params_args, dlim); + token = strtok_r(params_args, dlim, &sp); while (token && isdigit(*token) && count < n_vals) { vals[count++] = strtoul(token, NULL, 10); - token = strtok(NULL, dlim); + token = strtok_r(NULL, dlim, &sp); } free(params_args); From patchwork Fri Nov 8 11:04:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148170 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8822D45CA6; Fri, 8 Nov 2024 12:17:44 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9FA41433B3; Fri, 8 Nov 2024 12:16:05 +0100 (CET) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id B82054337E for ; Fri, 8 Nov 2024 12:15:51 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.88.214]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4XlGYY4k9Gz20spt; Fri, 8 Nov 2024 19:14:41 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id C1F151A016C; Fri, 8 Nov 2024 19:15:50 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:50 +0800 From: Jie Hai To: , , , Kai Ji , Arkadiusz Kusztal , Brian Dooley CC: , , , Subject: [PATCH v5 21/25] common/qat: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:04:00 +0800 Message-ID: <20241108110404.18317-22-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 99ab2806687b ("common/qat: isolate parser arguments configuration") Signed-off-by: Jie Hai --- drivers/common/qat/qat_device.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/common/qat/qat_device.c b/drivers/common/qat/qat_device.c index bca88fd9bded..99153775d883 100644 --- a/drivers/common/qat/qat_device.c +++ b/drivers/common/qat/qat_device.c @@ -4,6 +4,7 @@ #include #include +#include #include #include "qat_device.h" @@ -222,6 +223,7 @@ qat_dev_parse_command_line(struct qat_pci_device *qat_dev, { int len = 0; char *token = NULL; + char *sp = NULL; if (!devargs) return 0; @@ -236,14 +238,14 @@ qat_dev_parse_command_line(struct qat_pci_device *qat_dev, return -1; } strcpy(qat_dev->command_line, devargs->drv_str); - token = strtok(qat_dev->command_line, ","); + token = strtok_r(qat_dev->command_line, ",", &sp); while (token != NULL) { if (!cmdline_validate(token)) { QAT_LOG(ERR, "Incorrect command line argument: %s", token); return -1; } - token = strtok(NULL, ","); + token = strtok_r(NULL, ",", &sp); } /* Copy once againe the entire string, strtok already altered the contents */ strcpy(qat_dev->command_line, devargs->drv_str); From patchwork Fri Nov 8 11:04:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148176 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2EEDC45CA6; Fri, 8 Nov 2024 12:18:16 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 678B8433C8; Fri, 8 Nov 2024 12:16:12 +0100 (CET) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id 5863143384 for ; Fri, 8 Nov 2024 12:15:53 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.162.112]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4XlGXv5bhPz2Fbs2; Fri, 8 Nov 2024 19:14:07 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 6F05E14022E; Fri, 8 Nov 2024 19:15:51 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:50 +0800 From: Jie Hai To: , , , Dariusz Sosnowski , Viacheslav Ovsiienko , Bing Zhao , Ori Kam , Suanming Mou , Matan Azrad , Michael Baum CC: , , , Subject: [PATCH v5 22/25] net/mlx5: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:04:01 +0800 Message-ID: <20241108110404.18317-23-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 0683c002f7f5 ("net/mlx5: add testpmd commands for GENEVE TLV parser") Signed-off-by: Jie Hai --- drivers/net/mlx5/mlx5_testpmd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_testpmd.c b/drivers/net/mlx5/mlx5_testpmd.c index 1bb5a89559fe..7bd220fafa46 100644 --- a/drivers/net/mlx5/mlx5_testpmd.c +++ b/drivers/net/mlx5/mlx5_testpmd.c @@ -353,6 +353,7 @@ mlx5_test_parse_geneve_option_data(const char *buff, uint8_t data_len, rte_be32_t **match_data_mask) { rte_be32_t *data; + char *sp = NULL; char *buff2; char *token; uint8_t i = 0; @@ -377,7 +378,7 @@ mlx5_test_parse_geneve_option_data(const char *buff, uint8_t data_len, return -ENOMEM; } - token = strtok(buff2, SPACE_DELIMITER); + token = strtok_r(buff2, SPACE_DELIMITER, &sp); while (token != NULL) { if (i == data_len) { TESTPMD_LOG(ERR, @@ -393,7 +394,7 @@ mlx5_test_parse_geneve_option_data(const char *buff, uint8_t data_len, else data[i] = 0x0; - token = strtok(NULL, SPACE_DELIMITER); + token = strtok_r(NULL, SPACE_DELIMITER, &sp); i++; } From patchwork Fri Nov 8 11:04:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148173 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1B27C45CA6; Fri, 8 Nov 2024 12:18:00 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 123EB433BA; Fri, 8 Nov 2024 12:16:09 +0100 (CET) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id 1A1294336A for ; Fri, 8 Nov 2024 12:15:53 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.17]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4XlGXw2wZqz2Fbs4; Fri, 8 Nov 2024 19:14:08 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 101C91A0188; Fri, 8 Nov 2024 19:15:52 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:51 +0800 From: Jie Hai To: , , , Akhil Goyal , Fan Zhang , Sergio Gonzalez Monroy , Pablo de Lara CC: , , , Subject: [PATCH v5 23/25] examples/l2fwd-crypto: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:04:02 +0800 Message-ID: <20241108110404.18317-24-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 1df9c0109f4c ("examples/l2fwd-crypto: parse key parameters") Signed-off-by: Jie Hai --- examples/l2fwd-crypto/main.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/l2fwd-crypto/main.c b/examples/l2fwd-crypto/main.c index a441312f5524..7128bd2e72cf 100644 --- a/examples/l2fwd-crypto/main.c +++ b/examples/l2fwd-crypto/main.c @@ -43,6 +43,7 @@ #include #include #include +#include #ifdef RTE_CRYPTO_SCHEDULER #include #endif @@ -1105,12 +1106,12 @@ static int parse_bytes(uint8_t *data, char *input_arg, uint16_t max_size) { unsigned byte_count; - char *token; + char *token, *sp = NULL; errno = 0; - for (byte_count = 0, token = strtok(input_arg, ":"); + for (byte_count = 0, token = strtok_r(input_arg, ":", &sp); (byte_count < max_size) && (token != NULL); - token = strtok(NULL, ":")) { + token = strtok_r(NULL, ":", &sp)) { int number = (int)strtol(token, NULL, 16); From patchwork Fri Nov 8 11:04:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148172 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 048F345CA6; Fri, 8 Nov 2024 12:17:55 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F0A4F433AA; Fri, 8 Nov 2024 12:16:07 +0100 (CET) Received: from szxga07-in.huawei.com (szxga07-in.huawei.com [45.249.212.35]) by mails.dpdk.org (Postfix) with ESMTP id B0DE84337E for ; Fri, 8 Nov 2024 12:15:53 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.44]) by szxga07-in.huawei.com (SkyGuard) with ESMTP id 4XlGXw3769z1SDpg; Fri, 8 Nov 2024 19:14:08 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id A5A961402CE; Fri, 8 Nov 2024 19:15:52 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:51 +0800 From: Jie Hai To: , , , Maxime Coquelin , Chenbo Xia , Sunil Pai G , Jiayu Hu CC: , , , Subject: [PATCH v5 24/25] examples/vhost: replace strtok with reentrant version Date: Fri, 8 Nov 2024 19:04:03 +0800 Message-ID: <20241108110404.18317-25-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. The strtok() is non-reentrant, it is better to replace it with a reentrant version. Fixes: 53d3f4778c1d ("vhost: integrate dmadev in asynchronous data-path") Signed-off-by: Jie Hai --- examples/vhost/main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/vhost/main.c b/examples/vhost/main.c index 4391d88c3d15..0fbb11b1d4f4 100644 --- a/examples/vhost/main.c +++ b/examples/vhost/main.c @@ -29,6 +29,7 @@ #include #include #include +#include #include "main.h" @@ -259,6 +260,7 @@ open_dma(const char *value) uint16_t i = 0; char *dma_arg[RTE_MAX_VHOST_DEVICE]; int args_nr; + char *sp = NULL; if (input == NULL) return -1; @@ -272,7 +274,7 @@ open_dma(const char *value) /* process DMA devices within bracket. */ addrs++; - substr = strtok(addrs, ";]"); + substr = strtok_r(addrs, ";]", &sp); if (!substr) { ret = -1; goto out; From patchwork Fri Nov 8 11:04:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jie Hai X-Patchwork-Id: 148175 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B673845CA6; Fri, 8 Nov 2024 12:18:10 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 42CD9433C0; Fri, 8 Nov 2024 12:16:11 +0100 (CET) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by mails.dpdk.org (Postfix) with ESMTP id D4F2F4336A for ; Fri, 8 Nov 2024 12:15:54 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.252]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4XlGXr1vcYz10V6r; Fri, 8 Nov 2024 19:14:04 +0800 (CST) Received: from kwepemf500004.china.huawei.com (unknown [7.202.181.242]) by mail.maildlp.com (Postfix) with ESMTPS id 2693F180AEA; Fri, 8 Nov 2024 19:15:53 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemf500004.china.huawei.com (7.202.181.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 8 Nov 2024 19:15:52 +0800 From: Jie Hai To: , , CC: , , , Subject: [PATCH v5 25/25] devtools: check for some reentrant function Date: Fri, 8 Nov 2024 19:04:04 +0800 Message-ID: <20241108110404.18317-26-haijie1@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20241108110404.18317-1-haijie1@huawei.com> References: <20231113104550.2138654-1-haijie1@huawei.com> <20241108110404.18317-1-haijie1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemf500004.china.huawei.com (7.202.181.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Multiple threads calling the same function may cause condition race issues, which often leads to abnormal behavior and can cause more serious vulnerabilities such as abnormal termination, denial of service, and compromised data integrity. This patch adds check in checkpatches.sh for strtok, which is non-reentrant. Cc: stable@dpdk.org Signed-off-by: Jie Hai Acked-by: Chengwen Feng Acked-by: Morten Brørup --- devtools/checkpatches.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh index 4a8591be225e..80fe41604427 100755 --- a/devtools/checkpatches.sh +++ b/devtools/checkpatches.sh @@ -145,6 +145,14 @@ check_forbidden_additions() { # -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \ "$1" || res=1 + # refrain from using some non-reentrant functions + awk -v FOLDERS="lib drivers app examples" \ + -v EXPRESSIONS="strtok\\\(" \ + -v RET_ON_FAIL=1 \ + -v MESSAGE='Using non-reentrant function strtok, prefer strtok_r' \ + -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \ + "$1" || res=1 + # refrain from using some pthread functions awk -v FOLDERS="lib drivers app examples" \ -v EXPRESSIONS="pthread_(create|join|detach|set(_?name_np|affinity_np)|attr_set(inheritsched|schedpolicy))\\\(" \