The function strerror() is insecure in a multi-thread environment. This patch uses strerror_r() to replace it.
Signed-off-by: Dengdui Huang <huangdeng...@huawei.com> Acked-by: Chengwen Feng <fengcheng...@huawei.com> Acked-by: Morten Brørup <m...@smartsharesystems.com> Acked-by: Huisong Li <lihuis...@huawei.com> --- drivers/bus/dpaa/base/fman/fman.c | 8 ++++++-- drivers/bus/dpaa/dpaa_bus.c | 5 ++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/bus/dpaa/base/fman/fman.c b/drivers/bus/dpaa/base/fman/fman.c index d49339d81e..d9593cf459 100644 --- a/drivers/bus/dpaa/base/fman/fman.c +++ b/drivers/bus/dpaa/base/fman/fman.c @@ -1132,6 +1132,7 @@ fman_init(void) void fman_finish(void) { + char errmsg[RTE_STRERR_BUFSIZE]; struct __fman_if *__if, *tmpif; assert(fman_ccsr_map_fd != -1); @@ -1153,8 +1154,11 @@ fman_finish(void) in_be32(__if->ccsr_map + 8) & ~(u32)3); /* release the mapping */ _errno = munmap(__if->ccsr_map, __if->regs_size); - if (unlikely(_errno < 0)) - FMAN_ERR(_errno, "munmap() = (%s)", strerror(errno)); + if (unlikely(_errno < 0)) { + if (strerror_r(errno, errmsg, sizeof(errmsg)) != 0) + snprintf(errmsg, sizeof(errmsg), "Unknown error %d", errno); + FMAN_ERR(_errno, "munmap() = (%s)", errmsg); + } DPAA_BUS_INFO("Tearing down %s", __if->node_path); list_del(&__if->__if.node); rte_free(__if); diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index 9ffbe07c93..8fabd74899 100644 --- a/drivers/bus/dpaa/dpaa_bus.c +++ b/drivers/bus/dpaa/dpaa_bus.c @@ -627,12 +627,15 @@ rte_dpaa_bus_dev_build(void) static int rte_dpaa_setup_intr(struct rte_intr_handle *intr_handle) { + char errmsg[RTE_STRERR_BUFSIZE]; int fd; fd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); if (fd < 0) { + if (strerror_r(errno, errmsg, sizeof(errmsg)) != 0) + snprintf(errmsg, sizeof(errmsg), "Unknown error %d", errno); DPAA_BUS_ERR("Cannot set up eventfd, error %i (%s)", - errno, strerror(errno)); + errno, errmsg); return errno; } -- 2.33.0