get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 134340,
    "url": "http://patchwork.dpdk.org/api/patches/134340/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20231114123552.398072-16-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-16-huangdengdui@huawei.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231114123552.398072-16-huangdengdui@huawei.com",
    "date": "2023-11-14T12:35:25",
    "name": "[v3,15/42] bus/vmbus: use rte strerror",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "d01ae6b5165e811fb771684b9a4e4a480aed301a",
    "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-16-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/134340/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/134340/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 3B45143329;\n\tTue, 14 Nov 2023 13:37:55 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id ABDF040E13;\n\tTue, 14 Nov 2023 13:36:18 +0100 (CET)",
            "from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187])\n by mails.dpdk.org (Postfix) with ESMTP id BCB3040279\n for <dev@dpdk.org>; Tue, 14 Nov 2023 13:35:56 +0100 (CET)",
            "from dggpeml500011.china.huawei.com (unknown [172.30.72.54])\n by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4SV5P76BdCzvQgq;\n Tue, 14 Nov 2023 20:35:39 +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:55 +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 15/42] bus/vmbus: use rte strerror",
        "Date": "Tue, 14 Nov 2023 20:35:25 +0800",
        "Message-ID": "<20231114123552.398072-16-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/bus/vmbus/linux/vmbus_bus.c  |  7 ++++---\n drivers/bus/vmbus/linux/vmbus_uio.c  | 21 +++++++++++----------\n drivers/bus/vmbus/vmbus_common.c     |  4 ++--\n drivers/bus/vmbus/vmbus_common_uio.c |  3 ++-\n 4 files changed, 19 insertions(+), 16 deletions(-)",
    "diff": "diff --git a/drivers/bus/vmbus/linux/vmbus_bus.c b/drivers/bus/vmbus/linux/vmbus_bus.c\nindex 01d8111b85..0c92c1d4dd 100644\n--- a/drivers/bus/vmbus/linux/vmbus_bus.c\n+++ b/drivers/bus/vmbus/linux/vmbus_bus.c\n@@ -18,6 +18,7 @@\n #include <rte_memory.h>\n #include <rte_malloc.h>\n #include <rte_bus_vmbus.h>\n+#include <rte_errno.h>\n \n #include \"eal_filesystem.h\"\n #include \"private.h\"\n@@ -50,7 +51,7 @@ parse_sysfs_uuid(const char *filename, rte_uuid_t uu)\n \tf = fopen(filename, \"r\");\n \tif (f == NULL) {\n \t\tVMBUS_LOG(ERR, \"cannot open sysfs value %s: %s\",\n-\t\t\t  filename, strerror(errno));\n+\t\t\t  filename, rte_strerror(errno));\n \t\treturn -1;\n \t}\n \n@@ -92,7 +93,7 @@ get_sysfs_string(const char *filename, char *buf, size_t buflen)\n \tf = fopen(filename, \"r\");\n \tif (f == NULL) {\n \t\tVMBUS_LOG(ERR, \"cannot open sysfs value %s:%s\",\n-\t\t\t  filename, strerror(errno));\n+\t\t\t  filename, rte_strerror(errno));\n \t\treturn -1;\n \t}\n \n@@ -350,7 +351,7 @@ rte_vmbus_scan(void)\n \t\t\treturn 0;\n \n \t\tVMBUS_LOG(ERR, \"opendir %s failed: %s\",\n-\t\t\t  SYSFS_VMBUS_DEVICES, strerror(errno));\n+\t\t\t  SYSFS_VMBUS_DEVICES, rte_strerror(errno));\n \t\treturn -1;\n \t}\n \ndiff --git a/drivers/bus/vmbus/linux/vmbus_uio.c b/drivers/bus/vmbus/linux/vmbus_uio.c\nindex 26edef342d..5fce68d880 100644\n--- a/drivers/bus/vmbus/linux/vmbus_uio.c\n+++ b/drivers/bus/vmbus/linux/vmbus_uio.c\n@@ -18,6 +18,7 @@\n #include <rte_malloc.h>\n #include <rte_bus_vmbus.h>\n #include <rte_string_fns.h>\n+#include <rte_errno.h>\n \n #include \"private.h\"\n \n@@ -34,7 +35,7 @@ void vmbus_uio_irq_control(struct rte_vmbus_device *dev, int32_t onoff)\n \t\t  sizeof(onoff)) < 0) {\n \t\tVMBUS_LOG(ERR, \"cannot write to %d:%s\",\n \t\t\t  rte_intr_fd_get(dev->intr_handle),\n-\t\t\t  strerror(errno));\n+\t\t\t  rte_strerror(errno));\n \t}\n }\n \n@@ -51,7 +52,7 @@ int vmbus_uio_irq_read(struct rte_vmbus_device *dev)\n \tif (cc < (int)sizeof(count)) {\n \t\tif (cc < 0) {\n \t\t\tVMBUS_LOG(ERR, \"IRQ read failed %s\",\n-\t\t\t\t  strerror(errno));\n+\t\t\t\t  rte_strerror(errno));\n \t\t\treturn -errno;\n \t\t}\n \t\tVMBUS_LOG(ERR, \"can't read IRQ count\");\n@@ -91,7 +92,7 @@ vmbus_uio_alloc_resource(struct rte_vmbus_device *dev,\n \tfd = open(devname, O_RDWR);\n \tif (fd < 0) {\n \t\tVMBUS_LOG(ERR, \"Cannot open %s: %s\",\n-\t\t\tdevname, strerror(errno));\n+\t\t\tdevname, rte_strerror(errno));\n \t\tgoto error;\n \t}\n \n@@ -158,7 +159,7 @@ vmbus_uio_map_resource_by_index(struct rte_vmbus_device *dev, int idx,\n \tfd = open(uio_res->path, O_RDWR);\n \tif (fd < 0) {\n \t\tVMBUS_LOG(ERR, \"Cannot open %s: %s\",\n-\t\t\t  uio_res->path, strerror(errno));\n+\t\t\t  uio_res->path, rte_strerror(errno));\n \t\treturn -1;\n \t}\n \n@@ -256,13 +257,13 @@ static int vmbus_uio_map_subchan(const struct rte_vmbus_device *dev,\n \tfd = open(ring_path, O_RDWR);\n \tif (fd < 0) {\n \t\tVMBUS_LOG(ERR, \"Cannot open %s: %s\",\n-\t\t\t  ring_path, strerror(errno));\n+\t\t\t  ring_path, rte_strerror(errno));\n \t\treturn -errno;\n \t}\n \n \tif (fstat(fd, &sb) < 0) {\n \t\tVMBUS_LOG(ERR, \"Cannot state %s: %s\",\n-\t\t\t  ring_path, strerror(errno));\n+\t\t\t  ring_path, rte_strerror(errno));\n \t\tclose(fd);\n \t\treturn -errno;\n \t}\n@@ -342,7 +343,7 @@ static int vmbus_uio_sysfs_read(const char *dir, const char *name,\n \tf = fopen(path, \"r\");\n \tif (!f) {\n \t\tVMBUS_LOG(ERR, \"can't open %s:%s\",\n-\t\t\t  path, strerror(errno));\n+\t\t\t  path, rte_strerror(errno));\n \t\treturn -errno;\n \t}\n \n@@ -404,7 +405,7 @@ int vmbus_uio_get_subchan(struct vmbus_channel *primary,\n \tchan_dir = opendir(chan_path);\n \tif (!chan_dir) {\n \t\tVMBUS_LOG(ERR, \"cannot open %s: %s\",\n-\t\t\t  chan_path, strerror(errno));\n+\t\t\t  chan_path, rte_strerror(errno));\n \t\treturn -errno;\n \t}\n \n@@ -441,7 +442,7 @@ int vmbus_uio_get_subchan(struct vmbus_channel *primary,\n \t\t\t\t\t   &subid, UINT16_MAX);\n \t\tif (err) {\n \t\t\tVMBUS_LOG(NOTICE, \"no subchannel_id in %s:%s\",\n-\t\t\t\t  subchan_path, strerror(-err));\n+\t\t\t\t  subchan_path, rte_strerror(-err));\n \t\t\tgoto fail;\n \t\t}\n \n@@ -452,7 +453,7 @@ int vmbus_uio_get_subchan(struct vmbus_channel *primary,\n \t\t\t\t\t   &monid, UINT8_MAX);\n \t\tif (err) {\n \t\t\tVMBUS_LOG(NOTICE, \"no monitor_id in %s:%s\",\n-\t\t\t\t  subchan_path, strerror(-err));\n+\t\t\t\t  subchan_path, rte_strerror(-err));\n \t\t\tgoto fail;\n \t\t}\n \ndiff --git a/drivers/bus/vmbus/vmbus_common.c b/drivers/bus/vmbus/vmbus_common.c\nindex b9139c6e6c..e1a80c9587 100644\n--- a/drivers/bus/vmbus/vmbus_common.c\n+++ b/drivers/bus/vmbus/vmbus_common.c\n@@ -38,7 +38,7 @@ vmbus_map_resource(void *requested_addr, int fd, off_t offset, size_t size,\n \t\tVMBUS_LOG(ERR,\n \t\t\t  \"mmap(%d, %p, %zu, %ld) failed: %s\",\n \t\t\t  fd, requested_addr, size, (long)offset,\n-\t\t\t  strerror(errno));\n+\t\t\t  rte_strerror(errno));\n \t} else {\n \t\tVMBUS_LOG(DEBUG, \"  VMBUS memory mapped at %p\",\n \t\t\t  mapaddr);\n@@ -57,7 +57,7 @@ vmbus_unmap_resource(void *requested_addr, size_t size)\n \tif (munmap(requested_addr, size)) {\n \t\tVMBUS_LOG(ERR, \"munmap(%p, 0x%lx) failed: %s\",\n \t\t\trequested_addr, (unsigned long)size,\n-\t\t\tstrerror(errno));\n+\t\t\trte_strerror(errno));\n \t} else {\n \t\tVMBUS_LOG(DEBUG, \"  VMBUS memory unmapped at %p\",\n \t\t\t  requested_addr);\ndiff --git a/drivers/bus/vmbus/vmbus_common_uio.c b/drivers/bus/vmbus/vmbus_common_uio.c\nindex 4d4613513c..54c1187026 100644\n--- a/drivers/bus/vmbus/vmbus_common_uio.c\n+++ b/drivers/bus/vmbus/vmbus_common_uio.c\n@@ -14,6 +14,7 @@\n #include <rte_log.h>\n #include <rte_malloc.h>\n #include <rte_bus_vmbus.h>\n+#include <rte_errno.h>\n \n #include \"private.h\"\n \n@@ -56,7 +57,7 @@ vmbus_uio_map_secondary(struct rte_vmbus_device *dev)\n \tfd = open(uio_res->path, O_RDWR);\n \tif (fd < 0) {\n \t\tVMBUS_LOG(ERR, \"Cannot open %s: %s\",\n-\t\t\t  uio_res->path, strerror(errno));\n+\t\t\t  uio_res->path, rte_strerror(errno));\n \t\treturn -1;\n \t}\n \n",
    "prefixes": [
        "v3",
        "15/42"
    ]
}