get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/134361/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 134361,
    "url": "http://patchwork.dpdk.org/api/patches/134361/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20231114123552.398072-39-huangdengdui@huawei.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20231114123552.398072-39-huangdengdui@huawei.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231114123552.398072-39-huangdengdui@huawei.com",
    "date": "2023-11-14T12:35:48",
    "name": "[v3,38/42] net/virtio: use rte strerror",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "ec96351a4a234779af0476ae067525f70004a824",
    "submitter": {
        "id": 3066,
        "url": "http://patchwork.dpdk.org/api/people/3066/?format=api",
        "name": "huangdengdui",
        "email": "huangdengdui@huawei.com"
    },
    "delegate": {
        "id": 24651,
        "url": "http://patchwork.dpdk.org/api/users/24651/?format=api",
        "username": "dmarchand",
        "first_name": "David",
        "last_name": "Marchand",
        "email": "david.marchand@redhat.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20231114123552.398072-39-huangdengdui@huawei.com/mbox/",
    "series": [
        {
            "id": 30293,
            "url": "http://patchwork.dpdk.org/api/series/30293/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=30293",
            "date": "2023-11-14T12:35:13",
            "name": "replace strerror",
            "version": 3,
            "mbox": "http://patchwork.dpdk.org/series/30293/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/134361/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/134361/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 7E69843329;\n\tTue, 14 Nov 2023 13:40:15 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id A2C23427E6;\n\tTue, 14 Nov 2023 13:36:41 +0100 (CET)",
            "from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255])\n by mails.dpdk.org (Postfix) with ESMTP id 98E87402ED\n for <dev@dpdk.org>; Tue, 14 Nov 2023 13:35:59 +0100 (CET)",
            "from dggpeml500011.china.huawei.com (unknown [172.30.72.56])\n by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4SV5Kh3kqmz1P8Jh;\n Tue, 14 Nov 2023 20:32:40 +0800 (CST)",
            "from localhost.huawei.com (10.50.165.33) by\n dggpeml500011.china.huawei.com (7.185.36.84) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n 15.1.2507.31; Tue, 14 Nov 2023 20:35:58 +0800"
        ],
        "From": "Dengdui Huang <huangdengdui@huawei.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<ferruh.yigit@amd.com>, <stephen@networkplumber.org>,\n <lihuisong@huawei.com>, <fengchengwen@huawei.com>, <liuyonglong@huawei.com>",
        "Subject": "[PATCH v3 38/42] net/virtio: use rte strerror",
        "Date": "Tue, 14 Nov 2023 20:35:48 +0800",
        "Message-ID": "<20231114123552.398072-39-huangdengdui@huawei.com>",
        "X-Mailer": "git-send-email 2.33.0",
        "In-Reply-To": "<20231114123552.398072-1-huangdengdui@huawei.com>",
        "References": "<20231114082539.1858594-44-huangdengdui@huawei.com>\n <20231114123552.398072-1-huangdengdui@huawei.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.50.165.33]",
        "X-ClientProxiedBy": "dggems706-chm.china.huawei.com (10.3.19.183) To\n dggpeml500011.china.huawei.com (7.185.36.84)",
        "X-CFilter-Loop": "Reflected",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "The function strerror() is insecure in a multi-thread environment.\nThis patch uses rte_strerror() to replace it.\n\nCc: stable@dpdk.org\n\nSigned-off-by: Dengdui Huang <huangdengdui@huawei.com>\nAcked-by: Chengwen Feng <fengchengwen@huawei.com>\n---\n drivers/net/virtio/virtio_user/vhost_kernel.c |  8 +++---\n .../net/virtio/virtio_user/vhost_kernel_tap.c | 25 ++++++++++---------\n drivers/net/virtio/virtio_user/vhost_user.c   | 20 +++++++--------\n drivers/net/virtio/virtio_user/vhost_vdpa.c   | 12 ++++-----\n .../net/virtio/virtio_user/virtio_user_dev.c  |  8 +++---\n drivers/net/virtio/virtio_user_ethdev.c       |  6 ++---\n 6 files changed, 40 insertions(+), 39 deletions(-)",
    "diff": "diff --git a/drivers/net/virtio/virtio_user/vhost_kernel.c b/drivers/net/virtio/virtio_user/vhost_kernel.c\nindex e42bb35935..b1dec119fc 100644\n--- a/drivers/net/virtio/virtio_user/vhost_kernel.c\n+++ b/drivers/net/virtio/virtio_user/vhost_kernel.c\n@@ -92,7 +92,7 @@ vhost_kernel_ioctl(int fd, uint64_t request, void *arg)\n \tret = ioctl(fd, request, arg);\n \tif (ret) {\n \t\tPMD_DRV_LOG(ERR, \"Vhost-kernel ioctl %\"PRIu64\" failed (%s)\",\n-\t\t\t\trequest, strerror(errno));\n+\t\t\t\trequest, rte_strerror(errno));\n \t\treturn -1;\n \t}\n \n@@ -428,7 +428,7 @@ vhost_kernel_setup(struct virtio_user_dev *dev)\n \tfor (i = 0; i < dev->max_queue_pairs; ++i) {\n \t\tvhostfd = open(dev->path, O_RDWR);\n \t\tif (vhostfd < 0) {\n-\t\t\tPMD_DRV_LOG(ERR, \"fail to open %s, %s\", dev->path, strerror(errno));\n+\t\t\tPMD_DRV_LOG(ERR, \"fail to open %s, %s\", dev->path, rte_strerror(errno));\n \t\t\tgoto err_tapfds;\n \t\t}\n \t\tdata->vhostfds[i] = vhostfd;\n@@ -511,14 +511,14 @@ vhost_kernel_set_backend(int vhostfd, int tapfd)\n \tf.index = 0;\n \tif (ioctl(vhostfd, VHOST_NET_SET_BACKEND, &f) < 0) {\n \t\tPMD_DRV_LOG(ERR, \"VHOST_NET_SET_BACKEND fails, %s\",\n-\t\t\t\tstrerror(errno));\n+\t\t\t\trte_strerror(errno));\n \t\treturn -1;\n \t}\n \n \tf.index = 1;\n \tif (ioctl(vhostfd, VHOST_NET_SET_BACKEND, &f) < 0) {\n \t\tPMD_DRV_LOG(ERR, \"VHOST_NET_SET_BACKEND fails, %s\",\n-\t\t\t\tstrerror(errno));\n+\t\t\t\trte_strerror(errno));\n \t\treturn -1;\n \t}\n \ndiff --git a/drivers/net/virtio/virtio_user/vhost_kernel_tap.c b/drivers/net/virtio/virtio_user/vhost_kernel_tap.c\nindex 611e2e25ec..4542ccbf04 100644\n--- a/drivers/net/virtio/virtio_user/vhost_kernel_tap.c\n+++ b/drivers/net/virtio/virtio_user/vhost_kernel_tap.c\n@@ -13,6 +13,7 @@\n #include <limits.h>\n \n #include <rte_ether.h>\n+#include <rte_errno.h>\n \n #include \"vhost_kernel_tap.h\"\n #include \"../virtio_logs.h\"\n@@ -27,12 +28,12 @@ tap_support_features(unsigned int *tap_features)\n \ttapfd = open(PATH_NET_TUN, O_RDWR);\n \tif (tapfd < 0) {\n \t\tPMD_DRV_LOG(ERR, \"fail to open %s: %s\",\n-\t\t\t    PATH_NET_TUN, strerror(errno));\n+\t\t\t    PATH_NET_TUN, rte_strerror(errno));\n \t\treturn -1;\n \t}\n \n \tif (ioctl(tapfd, TUNGETFEATURES, tap_features) == -1) {\n-\t\tPMD_DRV_LOG(ERR, \"TUNGETFEATURES failed: %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"TUNGETFEATURES failed: %s\", rte_strerror(errno));\n \t\tclose(tapfd);\n \t\treturn -1;\n \t}\n@@ -49,11 +50,11 @@ tap_open(const char *ifname, unsigned int r_flags, bool multi_queue)\n \n \ttapfd = open(PATH_NET_TUN, O_RDWR);\n \tif (tapfd < 0) {\n-\t\tPMD_DRV_LOG(ERR, \"fail to open %s: %s\", PATH_NET_TUN, strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"fail to open %s: %s\", PATH_NET_TUN, rte_strerror(errno));\n \t\treturn -1;\n \t}\n \tif (fcntl(tapfd, F_SETFL, O_NONBLOCK) < 0) {\n-\t\tPMD_DRV_LOG(ERR, \"fcntl tapfd failed: %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"fcntl tapfd failed: %s\", rte_strerror(errno));\n \t\tclose(tapfd);\n \t\treturn -1;\n \t}\n@@ -68,12 +69,12 @@ tap_open(const char *ifname, unsigned int r_flags, bool multi_queue)\n \t\tif (multi_queue) {\n \t\t\tPMD_DRV_LOG(DEBUG,\n \t\t\t\t\"TUNSETIFF failed (will retry without IFF_MULTI_QUEUE): %s\",\n-\t\t\t\tstrerror(errno));\n+\t\t\t\trte_strerror(errno));\n \t\t\tmulti_queue = false;\n \t\t\tgoto retry_mono_q;\n \t\t}\n \n-\t\tPMD_DRV_LOG(ERR, \"TUNSETIFF failed: %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"TUNSETIFF failed: %s\", rte_strerror(errno));\n \t\tclose(tapfd);\n \t\ttapfd = -1;\n \t}\n@@ -88,7 +89,7 @@ tap_get_name(int tapfd, char **name)\n \n \tmemset(&ifr, 0, sizeof(ifr));\n \tif (ioctl(tapfd, TUNGETIFF, (void *)&ifr) == -1) {\n-\t\tPMD_DRV_LOG(ERR, \"TUNGETIFF failed: %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"TUNGETIFF failed: %s\", rte_strerror(errno));\n \t\treturn -1;\n \t}\n \tret = asprintf(name, \"%s\", ifr.ifr_name);\n@@ -104,7 +105,7 @@ tap_get_flags(int tapfd, unsigned int *tap_flags)\n \n \tmemset(&ifr, 0, sizeof(ifr));\n \tif (ioctl(tapfd, TUNGETIFF, (void *)&ifr) == -1) {\n-\t\tPMD_DRV_LOG(ERR, \"TUNGETIFF failed: %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"TUNGETIFF failed: %s\", rte_strerror(errno));\n \t\treturn -1;\n \t}\n \t*tap_flags = ifr.ifr_flags;\n@@ -120,7 +121,7 @@ tap_set_mac(int tapfd, uint8_t *mac)\n \tifr.ifr_hwaddr.sa_family = ARPHRD_ETHER;\n \tmemcpy(ifr.ifr_hwaddr.sa_data, mac, RTE_ETHER_ADDR_LEN);\n \tif (ioctl(tapfd, SIOCSIFHWADDR, (void *)&ifr) == -1) {\n-\t\tPMD_DRV_LOG(ERR, \"SIOCSIFHWADDR failed: %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"SIOCSIFHWADDR failed: %s\", rte_strerror(errno));\n \t\treturn -1;\n \t}\n \treturn 0;\n@@ -155,7 +156,7 @@ vhost_kernel_tap_set_offload(int fd, uint64_t features)\n \t\toffload &= ~TUN_F_UFO;\n \t\tif (ioctl(fd, TUNSETOFFLOAD, offload) != 0) {\n \t\t\tPMD_DRV_LOG(ERR, \"TUNSETOFFLOAD ioctl() failed: %s\",\n-\t\t\t\tstrerror(errno));\n+\t\t\t\trte_strerror(errno));\n \t\t\treturn -1;\n \t\t}\n \t}\n@@ -175,12 +176,12 @@ vhost_kernel_tap_setup(int tapfd, int hdr_size, uint64_t features)\n \t * max_mem_regions, supported in newer version linux kernel\n \t */\n \tif (ioctl(tapfd, TUNSETVNETHDRSZ, &hdr_size) < 0) {\n-\t\tPMD_DRV_LOG(ERR, \"TUNSETVNETHDRSZ failed: %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"TUNSETVNETHDRSZ failed: %s\", rte_strerror(errno));\n \t\treturn -1;\n \t}\n \n \tif (ioctl(tapfd, TUNSETSNDBUF, &sndbuf) < 0) {\n-\t\tPMD_DRV_LOG(ERR, \"TUNSETSNDBUF failed: %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"TUNSETSNDBUF failed: %s\", rte_strerror(errno));\n \t\treturn -1;\n \t}\n \ndiff --git a/drivers/net/virtio/virtio_user/vhost_user.c b/drivers/net/virtio/virtio_user/vhost_user.c\nindex 3c05ac9cc0..e079c726da 100644\n--- a/drivers/net/virtio/virtio_user/vhost_user.c\n+++ b/drivers/net/virtio/virtio_user/vhost_user.c\n@@ -135,7 +135,7 @@ vhost_user_write(int fd, struct vhost_user_msg *msg, int *fds, int fd_num)\n \t} while (r < 0 && errno == EINTR);\n \n \tif (r < 0)\n-\t\tPMD_DRV_LOG(ERR, \"Failed to send msg: %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"Failed to send msg: %s\", rte_strerror(errno));\n \n \treturn r;\n }\n@@ -148,7 +148,7 @@ vhost_user_read(int fd, struct vhost_user_msg *msg)\n \n \tret = recv(fd, (void *)msg, sz_hdr, 0);\n \tif (ret < 0) {\n-\t\tPMD_DRV_LOG(ERR, \"Failed to recv msg header: %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"Failed to recv msg header: %s\", rte_strerror(errno));\n \t\treturn -1;\n \t} else if (ret < sz_hdr) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to recv msg hdr: %d instead of %d.\",\n@@ -174,7 +174,7 @@ vhost_user_read(int fd, struct vhost_user_msg *msg)\n \tif (sz_payload) {\n \t\tret = recv(fd, (void *)((char *)msg + sz_hdr), sz_payload, 0);\n \t\tif (ret < 0) {\n-\t\t\tPMD_DRV_LOG(ERR, \"Failed to recv msg payload: %s\", strerror(errno));\n+\t\t\tPMD_DRV_LOG(ERR, \"Failed to recv msg payload: %s\", rte_strerror(errno));\n \t\t\treturn -1;\n \t\t} else if (ret < sz_payload) {\n \t\t\tPMD_DRV_LOG(ERR, \"Failed to recv msg payload: %d instead of %u.\",\n@@ -749,7 +749,7 @@ vhost_user_start_server(struct virtio_user_dev *dev, struct sockaddr_un *un)\n \tret = bind(fd, (struct sockaddr *)un, sizeof(*un));\n \tif (ret < 0) {\n \t\tPMD_DRV_LOG(ERR, \"failed to bind to %s: %s; remove it and try again\",\n-\t\t\t    dev->path, strerror(errno));\n+\t\t\t    dev->path, rte_strerror(errno));\n \t\treturn -1;\n \t}\n \tret = listen(fd, MAX_VIRTIO_USER_BACKLOG);\n@@ -760,13 +760,13 @@ vhost_user_start_server(struct virtio_user_dev *dev, struct sockaddr_un *un)\n \tdata->vhostfd = accept(fd, NULL, NULL);\n \tif (data->vhostfd < 0) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to accept initial client connection (%s)\",\n-\t\t\t\tstrerror(errno));\n+\t\t\t\trte_strerror(errno));\n \t\treturn -1;\n \t}\n \n \tflag = fcntl(fd, F_GETFL);\n \tif (fcntl(fd, F_SETFL, flag | O_NONBLOCK) < 0) {\n-\t\tPMD_DRV_LOG(ERR, \"fcntl failed, %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"fcntl failed, %s\", rte_strerror(errno));\n \t\treturn -1;\n \t}\n \n@@ -834,15 +834,15 @@ vhost_user_setup(struct virtio_user_dev *dev)\n \n \tfd = socket(AF_UNIX, SOCK_STREAM, 0);\n \tif (fd < 0) {\n-\t\tPMD_DRV_LOG(ERR, \"socket() error, %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(ERR, \"socket() error, %s\", rte_strerror(errno));\n \t\tgoto err_data;\n \t}\n \n \tflag = fcntl(fd, F_GETFD);\n \tif (flag == -1)\n-\t\tPMD_DRV_LOG(WARNING, \"fcntl get fd failed, %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(WARNING, \"fcntl get fd failed, %s\", rte_strerror(errno));\n \telse if (fcntl(fd, F_SETFD, flag | FD_CLOEXEC) < 0)\n-\t\tPMD_DRV_LOG(WARNING, \"fcntl set fd failed, %s\", strerror(errno));\n+\t\tPMD_DRV_LOG(WARNING, \"fcntl set fd failed, %s\", rte_strerror(errno));\n \n \tmemset(&un, 0, sizeof(un));\n \tun.sun_family = AF_UNIX;\n@@ -856,7 +856,7 @@ vhost_user_setup(struct virtio_user_dev *dev)\n \t\t}\n \t} else {\n \t\tif (connect(fd, (struct sockaddr *)&un, sizeof(un)) < 0) {\n-\t\t\tPMD_DRV_LOG(ERR, \"connect error, %s\", strerror(errno));\n+\t\t\tPMD_DRV_LOG(ERR, \"connect error, %s\", rte_strerror(errno));\n \t\t\tgoto err_socket;\n \t\t}\n \t\tdata->vhostfd = fd;\ndiff --git a/drivers/net/virtio/virtio_user/vhost_vdpa.c b/drivers/net/virtio/virtio_user/vhost_vdpa.c\nindex 2c36b26224..ac0ef2c3f9 100644\n--- a/drivers/net/virtio/virtio_user/vhost_vdpa.c\n+++ b/drivers/net/virtio/virtio_user/vhost_vdpa.c\n@@ -92,7 +92,7 @@ vhost_vdpa_ioctl(int fd, uint64_t request, void *arg)\n \tret = ioctl(fd, request, arg);\n \tif (ret) {\n \t\tPMD_DRV_LOG(ERR, \"Vhost-vDPA ioctl %\"PRIu64\" failed (%s)\",\n-\t\t\t\trequest, strerror(errno));\n+\t\t\t\trequest, rte_strerror(errno));\n \t\treturn -1;\n \t}\n \n@@ -186,7 +186,7 @@ vhost_vdpa_iotlb_batch_begin(struct virtio_user_dev *dev)\n \n \tif (write(data->vhostfd, &msg, sizeof(msg)) != sizeof(msg)) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to send IOTLB batch begin (%s)\",\n-\t\t\t\tstrerror(errno));\n+\t\t\t\trte_strerror(errno));\n \t\treturn -1;\n \t}\n \n@@ -212,7 +212,7 @@ vhost_vdpa_iotlb_batch_end(struct virtio_user_dev *dev)\n \n \tif (write(data->vhostfd, &msg, sizeof(msg)) != sizeof(msg)) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to send IOTLB batch end (%s)\",\n-\t\t\t\tstrerror(errno));\n+\t\t\t\trte_strerror(errno));\n \t\treturn -1;\n \t}\n \n@@ -243,7 +243,7 @@ vhost_vdpa_dma_map(struct virtio_user_dev *dev, void *addr,\n \n \tif (write(data->vhostfd, &msg, sizeof(msg)) != sizeof(msg)) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to send IOTLB update (%s)\",\n-\t\t\t\tstrerror(errno));\n+\t\t\t\trte_strerror(errno));\n \t\treturn -1;\n \t}\n \n@@ -272,7 +272,7 @@ vhost_vdpa_dma_unmap(struct virtio_user_dev *dev, __rte_unused void *addr,\n \n \tif (write(data->vhostfd, &msg, sizeof(msg)) != sizeof(msg)) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to send IOTLB invalidate (%s)\",\n-\t\t\t\tstrerror(errno));\n+\t\t\t\trte_strerror(errno));\n \t\treturn -1;\n \t}\n \n@@ -530,7 +530,7 @@ vhost_vdpa_setup(struct virtio_user_dev *dev)\n \tdata->vhostfd = open(dev->path, O_RDWR);\n \tif (data->vhostfd < 0) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to open %s: %s\",\n-\t\t\t\tdev->path, strerror(errno));\n+\t\t\t\tdev->path, rte_strerror(errno));\n \t\tfree(data);\n \t\treturn -1;\n \t}\ndiff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c\nindex af1f8c8237..ad7537a746 100644\n--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c\n+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c\n@@ -401,13 +401,13 @@ virtio_user_dev_init_notify(struct virtio_user_dev *dev)\n \t\t */\n \t\tcallfd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);\n \t\tif (callfd < 0) {\n-\t\t\tPMD_DRV_LOG(ERR, \"(%s) callfd error, %s\", dev->path, strerror(errno));\n+\t\t\tPMD_DRV_LOG(ERR, \"(%s) callfd error, %s\", dev->path, rte_strerror(errno));\n \t\t\tgoto err;\n \t\t}\n \t\tkickfd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);\n \t\tif (kickfd < 0) {\n \t\t\tclose(callfd);\n-\t\t\tPMD_DRV_LOG(ERR, \"(%s) kickfd error, %s\", dev->path, strerror(errno));\n+\t\t\tPMD_DRV_LOG(ERR, \"(%s) kickfd error, %s\", dev->path, rte_strerror(errno));\n \t\t\tgoto err;\n \t\t}\n \t\tdev->callfds[i] = callfd;\n@@ -1043,7 +1043,7 @@ virtio_user_control_queue_notify(struct virtqueue *vq, void *cookie)\n \n \tif (write(dev->kickfds[vq->vq_queue_index], &buf, sizeof(buf)) < 0)\n \t\tPMD_DRV_LOG(ERR, \"failed to kick backend: %s\",\n-\t\t\t    strerror(errno));\n+\t\t\t    rte_strerror(errno));\n }\n \n int\n@@ -1264,7 +1264,7 @@ virtio_user_dev_server_reconnect(struct virtio_user_dev *dev)\n \n \tif (dev->ops->get_features(dev, &dev->device_features) < 0) {\n \t\tPMD_INIT_LOG(ERR, \"get_features failed: %s\",\n-\t\t\t     strerror(errno));\n+\t\t\t     rte_strerror(errno));\n \t\treturn -1;\n \t}\n \ndiff --git a/drivers/net/virtio/virtio_user_ethdev.c b/drivers/net/virtio/virtio_user_ethdev.c\nindex 3a31642899..908afde4fc 100644\n--- a/drivers/net/virtio/virtio_user_ethdev.c\n+++ b/drivers/net/virtio/virtio_user_ethdev.c\n@@ -273,7 +273,7 @@ virtio_user_notify_queue(struct virtio_hw *hw, struct virtqueue *vq)\n \n \tif (write(dev->kickfds[vq->vq_queue_index], &buf, sizeof(buf)) < 0)\n \t\tPMD_DRV_LOG(ERR, \"failed to kick backend: %s\",\n-\t\t\t    strerror(errno));\n+\t\t\t    rte_strerror(errno));\n }\n \n static int\n@@ -382,7 +382,7 @@ vdpa_dynamic_major_num(void)\n \tfp = fopen(\"/proc/devices\", \"r\");\n \tif (fp == NULL) {\n \t\tPMD_INIT_LOG(ERR, \"Cannot open /proc/devices: %s\",\n-\t\t\t     strerror(errno));\n+\t\t\t     rte_strerror(errno));\n \t\treturn UNNAMED_MAJOR;\n \t}\n \n@@ -409,7 +409,7 @@ virtio_user_backend_type(const char *path)\n \t\t\treturn VIRTIO_USER_BACKEND_VHOST_USER;\n \n \t\tPMD_INIT_LOG(ERR, \"Stat fails: %s (%s)\", path,\n-\t\t\t     strerror(errno));\n+\t\t\t     rte_strerror(errno));\n \t\treturn VIRTIO_USER_BACKEND_UNKNOWN;\n \t}\n \n",
    "prefixes": [
        "v3",
        "38/42"
    ]
}