get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 108045,
    "url": "https://patches.dpdk.org/api/patches/108045/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/tencent_A84207E75B69E45F043AA68F07ED5426C205@qq.com/",
    "project": {
        "id": 1,
        "url": "https://patches.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": "<tencent_A84207E75B69E45F043AA68F07ED5426C205@qq.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/tencent_A84207E75B69E45F043AA68F07ED5426C205@qq.com",
    "date": "2022-02-22T18:18:13",
    "name": "[15/20] net/memif: fix some memory leaks in error handlings",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "8260b10b772abbf51afe91f6a141fd18c50b130f",
    "submitter": {
        "id": 2458,
        "url": "https://patches.dpdk.org/api/people/2458/?format=api",
        "name": "Weiguo Li",
        "email": "liwg06@foxmail.com"
    },
    "delegate": {
        "id": 24651,
        "url": "https://patches.dpdk.org/api/users/24651/?format=api",
        "username": "dmarchand",
        "first_name": "David",
        "last_name": "Marchand",
        "email": "david.marchand@redhat.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/tencent_A84207E75B69E45F043AA68F07ED5426C205@qq.com/mbox/",
    "series": [
        {
            "id": 21799,
            "url": "https://patches.dpdk.org/api/series/21799/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=21799",
            "date": "2022-02-22T18:17:58",
            "name": "fix memory leaks in error handling",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/21799/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/108045/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/108045/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 7C8E6A034E;\n\tTue, 22 Feb 2022 19:20:08 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 19D044115F;\n\tTue, 22 Feb 2022 19:19:26 +0100 (CET)",
            "from out203-205-221-236.mail.qq.com (out203-205-221-236.mail.qq.com\n [203.205.221.236])\n by mails.dpdk.org (Postfix) with ESMTP id AB5314120A\n for <dev@dpdk.org>; Tue, 22 Feb 2022 19:19:23 +0100 (CET)",
            "from localhost.localdomain ([111.193.130.237])\n by newxmesmtplogicsvrszc6.qq.com (NewEsmtp) with SMTP\n id 49223207; Wed, 23 Feb 2022 02:18:18 +0800"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com;\n s=s201512; t=1645553961;\n bh=NFCZfcozpxnV9v1aVmL+ENEiEi9KciNkzT9FpOeGO1c=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References;\n b=kkW/Lk98YvO7hnr55sFCE9Ck1S+kAY1BSKXCmWF+XzN5DudpKHXhb5zcSnE1igdKp\n Ot7niSKxx9z9k8gwCsV68auKyun0H2wLl5PKIGeKCFysrm6Rvx/hyzt0GrVwMncWlY\n pN0vu6hXE+n67YAg45UCxf4ES+Ap1vOtnLRwXMRw=",
        "X-QQ-mid": "xmsmtpt1645553957tb22hr35w",
        "Message-ID": "<tencent_A84207E75B69E45F043AA68F07ED5426C205@qq.com>",
        "X-QQ-XMAILINFO": "Nkm5Fff6p/24238ChlWPL2oDwXO0XOGjW0u0GnhqP0TMBvLgbjS1Vu2K0HkxlK\n ieSBeGUO/FoTfxp9ZmmgdhGV+4qtQjWmFArvWaCOayk0+BREIbxOrvIdfpt65b83USBAfrmzEKhG\n 0fYV4O198EoOwxisww4/eNwluD8ImyYkvYhMPHXqMr/EmJ9aj3KTWhPfl/p8cUMMYFwVf5kJIaKJ\n ER4RawpSkZo1hlXO0G2OtWdkXEkT6Y7JITw1a4pTnPU191woNJXc78Lst5Kj09/WkiIgF5TcOW4n\n tPfDx83KGknUYcTaS8xHeqjgmcohZS1jxV3JtzgC/Cb2A05BXDKVsdd9SLdeqreHgA8kGHeG/v9I\n lDgSsNnTPgVLQr5He8ijTQj8R7eLMw4uTqFIABOOD+BBeXfgVN0JnMbk6R39tLDHzRfgTeIZ1py8\n /rQh4e0CS2HgXTd1/nQ0I1ykmQBZyi21EDEi2zTJSJgubpyJhDn4xWYrLEIwcHMFH6WXFnOiy90G\n ib4H2wsxfBGeisrV3AsqZffx8PIvM/Dl3zH8AmYNBP1D9oETi6ZUd0YR8W4E604xzzOUM/0PQ93E\n o+ytHOs++dEO91b4jXZh74TYdNPJo8GX1jB9JhUbx4e6ce8jN0dyRMFD3ZE7Ou7DWB8pwKsUTzqY\n W2SD4QG7ni+JRfSQdFSXyga/uwDH8ZmnEkwyU7cnEUTdcyVEPsPU04t9tVFVBqsBkV3cRcL0+J/Z\n 0zOvZBkFT6XFYGdypwsGeGdar408orss2k0OKyyKLzZJLvqA2KWh05drCOjoRbZcAxvIvO+Zm6R+\n NNqQLWfwZVH/GYCPD2j1M+0vL4iY0Fs+5QJlubBfo19JN+OVqSS9eoLo9dz/fUt9ojUmHkNOZRKM\n OHx4ZGG2TAOSnsv8ei5r6VyEQ9/2VtPg==",
        "From": "Weiguo Li <liwg06@foxmail.com>",
        "To": "dev@dpdk.org",
        "Cc": "adypodoman@gmail.com, xiaoyun.li@intel.com, tianfei.zhang@intel.com,\n bruce.richardson@intel.com, ivan.malov@oktetlabs.ru, jgrajcia@cisco.com,\n hkalra@marvell.com, ying.a.wang@intel.com, ting.xu@intel.com,\n simei.su@intel.com, qiming.yang@intel.com, motih@mellanox.com,\n shreyansh.jain@nxp.com, skoteshwar@marvell.com, stephen@networkplumber.org,\n kalesh-anakkur.purayil@broadcom.com, somnath.kotur@broadcom.com,\n declan.doherty@intel.com, gakhil@marvell.com, nicolas.chautru@intel.com",
        "Subject": "[PATCH 15/20] net/memif: fix some memory leaks in error handlings",
        "Date": "Wed, 23 Feb 2022 02:18:13 +0800",
        "X-OQ-MSGID": "\n <49e2a75f244b377045bf86e6dc4784507c3c273c.1645551559.git.liwg06@foxmail.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<cover.1645551559.git.liwg06@foxmail.com>",
        "References": "<cover.1645551559.git.liwg06@foxmail.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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": "1) When the validate to 'reply->num_fds' fails, memif_region 'r' is not\n   released, we can move the validation ahead of the memory allocation to\n   avoid this memory leak.\n2) In some error handlings, functions were returned without releasing the\n   memory. Fix them altogether in this patch.\n\nFixes: c41a04958b09 (\"net/memif: support multi-process\")\nFixes: 43b815d88188 (\"net/memif: support zero-copy slave\")\nFixes: d61138d4f0e2 (\"drivers: remove direct access to interrupt handle\")\n\nSigned-off-by: Weiguo Li <liwg06@foxmail.com>\n---\n drivers/net/memif/rte_eth_memif.c | 32 +++++++++++++++++++++----------\n 1 file changed, 22 insertions(+), 10 deletions(-)",
    "diff": "diff --git a/drivers/net/memif/rte_eth_memif.c b/drivers/net/memif/rte_eth_memif.c\nindex 587ad45576..ddbdeb6241 100644\n--- a/drivers/net/memif/rte_eth_memif.c\n+++ b/drivers/net/memif/rte_eth_memif.c\n@@ -158,6 +158,11 @@ memif_mp_request_regions(struct rte_eth_dev *dev)\n \t\treply_param = (struct mp_region_msg *)reply->param;\n \n \t\tif (reply_param->size > 0) {\n+\t\t\tif (reply->num_fds < 1) {\n+\t\t\t\tMIF_LOG(ERR, \"Missing file descriptor.\");\n+\t\t\t\tfree(reply);\n+\t\t\t\treturn -1;\n+\t\t\t}\n \t\t\tr = rte_zmalloc(\"region\", sizeof(struct memif_region), 0);\n \t\t\tif (r == NULL) {\n \t\t\t\tMIF_LOG(ERR, \"Failed to alloc memif region.\");\n@@ -165,11 +170,6 @@ memif_mp_request_regions(struct rte_eth_dev *dev)\n \t\t\t\treturn -ENOMEM;\n \t\t\t}\n \t\t\tr->region_size = reply_param->size;\n-\t\t\tif (reply->num_fds < 1) {\n-\t\t\t\tMIF_LOG(ERR, \"Missing file descriptor.\");\n-\t\t\t\tfree(reply);\n-\t\t\t\treturn -1;\n-\t\t\t}\n \t\t\tr->fd = reply->fds[0];\n \t\t\tr->addr = NULL;\n \n@@ -913,8 +913,10 @@ memif_region_init_zc(const struct rte_memseg_list *msl, const struct rte_memseg\n \t\tr->addr = msl->base_va;\n \t\tr->region_size = ms->len;\n \t\tr->fd = rte_memseg_get_fd(ms);\n-\t\tif (r->fd < 0)\n+\t\tif (r->fd < 0) {\n+\t\t\trte_free(r);\n \t\t\treturn -1;\n+\t\t}\n \t\tr->pkt_buffer_offset = 0;\n \n \t\tproc_private->regions[proc_private->regions_num - 1] = r;\n@@ -1328,6 +1330,7 @@ memif_tx_queue_setup(struct rte_eth_dev *dev,\n \tmq->intr_handle = rte_intr_instance_alloc(RTE_INTR_INSTANCE_F_SHARED);\n \tif (mq->intr_handle == NULL) {\n \t\tMIF_LOG(ERR, \"Failed to allocate intr handle\");\n+\t\trte_free(mq);\n \t\treturn -ENOMEM;\n \t}\n \n@@ -1336,11 +1339,15 @@ memif_tx_queue_setup(struct rte_eth_dev *dev,\n \tmq->n_pkts = 0;\n \tmq->n_bytes = 0;\n \n-\tif (rte_intr_fd_set(mq->intr_handle, -1))\n+\tif (rte_intr_fd_set(mq->intr_handle, -1)) {\n+\t\trte_free(mq);\n \t\treturn -rte_errno;\n+\t}\n \n-\tif (rte_intr_type_set(mq->intr_handle, RTE_INTR_HANDLE_EXT))\n+\tif (rte_intr_type_set(mq->intr_handle, RTE_INTR_HANDLE_EXT)) {\n+\t\trte_free(mq);\n \t\treturn -rte_errno;\n+\t}\n \n \tmq->in_port = dev->data->port_id;\n \tdev->data->tx_queues[qid] = mq;\n@@ -1369,6 +1376,7 @@ memif_rx_queue_setup(struct rte_eth_dev *dev,\n \tmq->intr_handle = rte_intr_instance_alloc(RTE_INTR_INSTANCE_F_SHARED);\n \tif (mq->intr_handle == NULL) {\n \t\tMIF_LOG(ERR, \"Failed to allocate intr handle\");\n+\t\trte_free(mq);\n \t\treturn -ENOMEM;\n \t}\n \n@@ -1376,11 +1384,15 @@ memif_rx_queue_setup(struct rte_eth_dev *dev,\n \tmq->n_pkts = 0;\n \tmq->n_bytes = 0;\n \n-\tif (rte_intr_fd_set(mq->intr_handle, -1))\n+\tif (rte_intr_fd_set(mq->intr_handle, -1)) {\n+\t\trte_free(mq);\n \t\treturn -rte_errno;\n+\t}\n \n-\tif (rte_intr_type_set(mq->intr_handle, RTE_INTR_HANDLE_EXT))\n+\tif (rte_intr_type_set(mq->intr_handle, RTE_INTR_HANDLE_EXT)) {\n+\t\trte_free(mq);\n \t\treturn -rte_errno;\n+\t}\n \n \tmq->mempool = mb_pool;\n \tmq->in_port = dev->data->port_id;\n",
    "prefixes": [
        "15/20"
    ]
}