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/vdpa/mlx5/mlx5_vdpa_virtq.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c 
b/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c
index 093cdd08d2..4a07f76a80 100644
--- a/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c
+++ b/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c
@@ -20,6 +20,7 @@ mlx5_vdpa_virtq_kick_handler(void *cb_arg)
 {
        struct mlx5_vdpa_virtq *virtq = cb_arg;
        struct mlx5_vdpa_priv *priv = virtq->priv;
+       char errmsg[RTE_STRERR_BUFSIZE];
        uint64_t buf;
        int nbytes;
        int retry;
@@ -43,8 +44,10 @@ mlx5_vdpa_virtq_kick_handler(void *cb_arg)
                            errno == EWOULDBLOCK ||
                            errno == EAGAIN)
                                continue;
+                       if (strerror_r(errno, errmsg, sizeof(errmsg)) != 0)
+                               snprintf(errmsg, sizeof(errmsg), "Unknown error 
%d", errno);
                        DRV_LOG(ERR,  "Failed to read kickfd of virtq %d: %s.",
-                               virtq->index, strerror(errno));
+                               virtq->index, errmsg);
                }
                break;
        }
-- 
2.33.0

Reply via email to