From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3C39045C76; Mon, 4 Nov 2024 12:13:00 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BAF15410F1; Mon, 4 Nov 2024 12:11:06 +0100 (CET) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id 68F2340E38 for ; Mon, 4 Nov 2024 12:10:44 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.88.163]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4Xhpcw6B8Mz2Fbsh; Mon, 4 Nov 2024 19:09:04 +0800 (CST) Received: from dggpeml500011.china.huawei.com (unknown [7.185.36.84]) by mail.maildlp.com (Postfix) with ESMTPS id 66B13180019; Mon, 4 Nov 2024 19:10:43 +0800 (CST) Received: from localhost.huawei.com (10.50.165.33) by dggpeml500011.china.huawei.com (7.185.36.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Mon, 4 Nov 2024 19:10:43 +0800 From: Dengdui Huang To: CC: , , , , , , , , , , Subject: [PATCH v5 29/52] net/dpaa: replace strerror with reentrant version Date: Mon, 4 Nov 2024 19:10:14 +0800 Message-ID: <20241104111037.3632161-30-huangdengdui@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20241104111037.3632161-1-huangdengdui@huawei.com> References: <20231114082539.1858594-1-huangdengdui@huawei.com> <20241104111037.3632161-1-huangdengdui@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [10.50.165.33] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To dggpeml500011.china.huawei.com (7.185.36.84) 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 The function strerror() is insecure in a multi-thread environment. This patch uses strerror_r() to replace it. Signed-off-by: Dengdui Huang Acked-by: Chengwen Feng Acked-by: Morten Brørup Acked-by: Huisong Li --- drivers/net/dpaa/dpaa_ethdev.c | 10 ++++++++-- drivers/net/dpaa/fmlib/fm_lib.c | 15 ++++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index e8d34e5898..0bdd5458e2 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -1075,6 +1075,7 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, struct fman_if *fif = dev->process_private; struct qman_fq *rxq = &dpaa_intf->rx_queues[queue_idx]; struct qm_mcc_initfq opts = {0}; + char errmsg[RTE_STRERR_BUFSIZE]; u32 ch_id, flags = 0; int ret; u32 buffsz = rte_pktmbuf_data_room_size(mp) - RTE_PKTMBUF_HEADROOM; @@ -1217,8 +1218,10 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, } ret = qman_init_fq(rxq, flags, &opts); if (ret) { + if (strerror_r(ret, errmsg, sizeof(errmsg)) != 0) + snprintf(errmsg, sizeof(errmsg), "Unknown error %d", ret); DPAA_PMD_ERR("Channel/Q association failed. fqid 0x%x " - "ret:%d(%s)", rxq->fqid, ret, strerror(ret)); + "ret:%d(%s)", rxq->fqid, ret, errmsg); return ret; } if (dpaa_svr_family == SVR_LS1043A_FAMILY) { @@ -1310,6 +1313,7 @@ dpaa_eth_eventq_attach(const struct rte_eth_dev *dev, struct dpaa_if *dpaa_intf = dev->data->dev_private; struct qman_fq *rxq = &dpaa_intf->rx_queues[eth_rx_queue_id]; struct qm_mcc_initfq opts = {0}; + char errmsg[RTE_STRERR_BUFSIZE]; if (dpaa_push_mode_max_queue) { DPAA_PMD_WARN("PUSH mode q and EVENTDEV are not compatible"); @@ -1352,8 +1356,10 @@ dpaa_eth_eventq_attach(const struct rte_eth_dev *dev, ret = qman_init_fq(rxq, flags, &opts); if (ret) { + if (strerror_r(ret, errmsg, sizeof(errmsg)) != 0) + snprintf(errmsg, sizeof(errmsg), "Unknown error %d", ret); DPAA_PMD_ERR("Ev-Channel/Q association failed. fqid 0x%x " - "ret:%d(%s)", rxq->fqid, ret, strerror(ret)); + "ret:%d(%s)", rxq->fqid, ret, errmsg); return ret; } diff --git a/drivers/net/dpaa/fmlib/fm_lib.c b/drivers/net/dpaa/fmlib/fm_lib.c index b35feba004..347d24906a 100644 --- a/drivers/net/dpaa/fmlib/fm_lib.c +++ b/drivers/net/dpaa/fmlib/fm_lib.c @@ -96,14 +96,17 @@ uint32_t fm_get_api_version(t_handle h_fm, ioc_fm_api_version_t *p_version) { t_device *p_dev = (t_device *)h_fm; + char errmsg[RTE_STRERR_BUFSIZE]; int ret; _fml_dbg("Calling..."); ret = ioctl(p_dev->fd, FM_IOC_GET_API_VERSION, p_version); if (ret) { + if (strerror_r(errno, errmsg, sizeof(errmsg)) != 0) + snprintf(errmsg, sizeof(errmsg), "Unknown error %d", errno); DPAA_PMD_ERR("cannot get API version, error %i (%s)", - errno, strerror(errno)); + errno, errmsg); RETURN_ERROR(MINOR, E_INVALID_OPERATION, NO_MSG); } _fml_dbg("Finishing."); @@ -250,6 +253,7 @@ fm_pcd_kg_scheme_set(t_handle h_fm_pcd, ioc_fm_pcd_kg_scheme_params_t *params) { t_device *p_pcd_dev = (t_device *)h_fm_pcd; + char errmsg[RTE_STRERR_BUFSIZE]; t_device *p_dev = NULL; int ret; @@ -275,8 +279,10 @@ fm_pcd_kg_scheme_set(t_handle h_fm_pcd, ret = ioctl(p_pcd_dev->fd, FM_PCD_IOC_KG_SCHEME_SET, params); if (ret) { + if (strerror_r(errno, errmsg, sizeof(errmsg)) != 0) + snprintf(errmsg, sizeof(errmsg), "Unknown error %d", errno); DPAA_PMD_ERR(" cannot set kg scheme, error %i (%s)", - errno, strerror(errno)); + errno, errmsg); return NULL; } @@ -300,6 +306,7 @@ uint32_t fm_pcd_kg_scheme_delete(t_handle h_scheme) { t_device *p_dev = (t_device *)h_scheme; + char errmsg[RTE_STRERR_BUFSIZE]; t_device *p_pcd_dev = NULL; ioc_fm_obj_t id; @@ -309,8 +316,10 @@ fm_pcd_kg_scheme_delete(t_handle h_scheme) id.obj = UINT_TO_PTR(p_dev->id); if (ioctl(p_pcd_dev->fd, FM_PCD_IOC_KG_SCHEME_DELETE, &id)) { + if (strerror_r(errno, errmsg, sizeof(errmsg)) != 0) + snprintf(errmsg, sizeof(errmsg), "Unknown error %d", errno); DPAA_PMD_WARN("cannot delete kg scheme, error %i (%s)", - errno, strerror(errno)); + errno, errmsg); RETURN_ERROR(MINOR, E_INVALID_OPERATION, NO_MSG); } -- 2.33.0