[PATCH v5 29/52] net/dpaa: replace strerror with reentrant version
Dengdui Huang
huangdengdui at huawei.com
Mon Nov 4 12:10:14 CET 2024
The function strerror() is insecure in a multi-thread environment.
This patch uses strerror_r() to replace it.
Signed-off-by: Dengdui Huang <huangdengdui at huawei.com>
Acked-by: Chengwen Feng <fengchengwen at huawei.com>
Acked-by: Morten Brørup <mb at smartsharesystems.com>
Acked-by: Huisong Li <lihuisong at huawei.com>
---
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
More information about the dev
mailing list