[PATCH v5 19/52] common/mlx5: replace strerror with reentrant version
Dengdui Huang
huangdengdui at huawei.com
Mon Nov 4 12:10:04 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/common/mlx5/linux/mlx5_nl.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/common/mlx5/linux/mlx5_nl.c b/drivers/common/mlx5/linux/mlx5_nl.c
index a5ac4dc543..67fc6c08d9 100644
--- a/drivers/common/mlx5/linux/mlx5_nl.c
+++ b/drivers/common/mlx5/linux/mlx5_nl.c
@@ -1924,18 +1924,21 @@ mlx5_nl_read_events(int nlsk_fd, mlx5_nl_event_cb *cb, void *cb_arg)
.msg_iov = &iov,
.msg_iovlen = 1,
};
+ char errmsg[RTE_STRERR_BUFSIZE];
struct nlmsghdr *hdr;
ssize_t size;
while (1) {
size = recvmsg(nlsk_fd, &msg, MSG_DONTWAIT);
if (size < 0) {
+ if (strerror_r(errno, errmsg, sizeof(errmsg)) != 0)
+ snprintf(errmsg, sizeof(errmsg), "Unknown error %d", errno);
if (errno == EAGAIN)
return 0;
if (errno == EINTR)
continue;
DRV_LOG(DEBUG, "Failed to receive netlink message: %s",
- strerror(errno));
+ errmsg);
rte_errno = errno;
return -rte_errno;
}
--
2.33.0
More information about the dev
mailing list