get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 81398,
    "url": "http://patches.dpdk.org/api/patches/81398/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20201019173415.582407-2-maxime.coquelin@redhat.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<20201019173415.582407-2-maxime.coquelin@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201019173415.582407-2-maxime.coquelin@redhat.com",
    "date": "2020-10-19T17:34:09",
    "name": "[1/7] vhost: fix virtqueues metadata allocation",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "4f85c7873db3255b6bee53589a776910fbf46e0e",
    "submitter": {
        "id": 512,
        "url": "http://patches.dpdk.org/api/people/512/?format=api",
        "name": "Maxime Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "delegate": {
        "id": 2642,
        "url": "http://patches.dpdk.org/api/users/2642/?format=api",
        "username": "mcoquelin",
        "first_name": "Maxime",
        "last_name": "Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20201019173415.582407-2-maxime.coquelin@redhat.com/mbox/",
    "series": [
        {
            "id": 13110,
            "url": "http://patches.dpdk.org/api/series/13110/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=13110",
            "date": "2020-10-19T17:34:08",
            "name": "vhost: make VQ metadata dereferencing robust",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/13110/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/81398/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/81398/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id D0C9FA04DC;\n\tMon, 19 Oct 2020 19:35:16 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 0E2D1E2F7;\n\tMon, 19 Oct 2020 19:34:37 +0200 (CEST)",
            "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [63.128.21.124])\n by dpdk.org (Postfix) with ESMTP id 41B17E2AE\n for <dev@dpdk.org>; Mon, 19 Oct 2020 19:34:33 +0200 (CEST)",
            "from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com\n [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id\n us-mta-500-cDppC6wJP4Ks1vAGahPqoQ-1; Mon, 19 Oct 2020 13:34:26 -0400",
            "from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com\n [10.5.11.13])\n (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n (No client certificate requested)\n by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D18171006C80;\n Mon, 19 Oct 2020 17:34:25 +0000 (UTC)",
            "from localhost.localdomain (unknown [10.36.110.40])\n by smtp.corp.redhat.com (Postfix) with ESMTP id 87B846EF42;\n Mon, 19 Oct 2020 17:34:24 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1603128871;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=wcGhHOB8XLeg1sjT20FH6iMy2CAufTaWrNVRFvUPHRo=;\n b=ETaIAXYrXbtqocCR3wZ9RNcTyc9r3tCHd0IMN/n6vg3axBi4jJXjMZYFpNLdRZU41gPjTj\n PM2tKrLvyNnsWQc94EmrxGt5zk21w+gvGkgs3Xr1u5CmYXron5IXGjYXjWORYP3L1TgoLX\n vWnPS5j0/voEBK8s4WLbBGF+MgKODhQ=",
        "X-MC-Unique": "cDppC6wJP4Ks1vAGahPqoQ-1",
        "From": "Maxime Coquelin <maxime.coquelin@redhat.com>",
        "To": "dev@dpdk.org,\n\tchenbo.xia@intel.com,\n\tamorenoz@redhat.com",
        "Cc": "Maxime Coquelin <maxime.coquelin@redhat.com>,\n\tstable@dpdk.org",
        "Date": "Mon, 19 Oct 2020 19:34:09 +0200",
        "Message-Id": "<20201019173415.582407-2-maxime.coquelin@redhat.com>",
        "In-Reply-To": "<20201019173415.582407-1-maxime.coquelin@redhat.com>",
        "References": "<20201019173415.582407-1-maxime.coquelin@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.13",
        "Authentication-Results": "relay.mimecast.com;\n auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=maxime.coquelin@redhat.com",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain; charset=\"US-ASCII\"",
        "Subject": "[dpdk-dev] [PATCH 1/7] vhost: fix virtqueues metadata allocation",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "The Vhost-user backend implementation assumes there will be\nno holes in the device's array of virtqueues metadata\npointers.\n\nIt can happen though, and would cause segmentation faults,\nmemory leaks or undefined behaviour.\n\nThis patch keep the assumption that there is no holes in this\narray, and allocate all uninitialized virtqueues metadata up\nto requested index.\n\nFixes: 160cbc815b41 (\"vhost: remove a hack on queue allocation\")\nCc: stable@dpdk.org\n\nSuggested-by: Adrian Moreno <amorenoz@redhat.com>\nSigned-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>\n---\n lib/librte_vhost/vhost.c | 33 ++++++++++++++++++++-------------\n 1 file changed, 20 insertions(+), 13 deletions(-)",
    "diff": "diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c\nindex 6068c38ec6..0c9ba3b3af 100644\n--- a/lib/librte_vhost/vhost.c\n+++ b/lib/librte_vhost/vhost.c\n@@ -579,22 +579,29 @@ int\n alloc_vring_queue(struct virtio_net *dev, uint32_t vring_idx)\n {\n \tstruct vhost_virtqueue *vq;\n+\tuint32_t i;\n \n-\tvq = rte_malloc(NULL, sizeof(struct vhost_virtqueue), 0);\n-\tif (vq == NULL) {\n-\t\tVHOST_LOG_CONFIG(ERR,\n-\t\t\t\"Failed to allocate memory for vring:%u.\\n\", vring_idx);\n-\t\treturn -1;\n-\t}\n+\t/* Also allocate holes, if any, up to requested vring index. */\n+\tfor (i = 0; i <= vring_idx; i++) {\n+\t\tif (dev->virtqueue[i])\n+\t\t\tcontinue;\n \n-\tdev->virtqueue[vring_idx] = vq;\n-\tinit_vring_queue(dev, vring_idx);\n-\trte_spinlock_init(&vq->access_lock);\n-\tvq->avail_wrap_counter = 1;\n-\tvq->used_wrap_counter = 1;\n-\tvq->signalled_used_valid = false;\n+\t\tvq = rte_malloc(NULL, sizeof(struct vhost_virtqueue), 0);\n+\t\tif (vq == NULL) {\n+\t\t\tVHOST_LOG_CONFIG(ERR,\n+\t\t\t\t\"Failed to allocate memory for vring:%u.\\n\", i);\n+\t\t\treturn -1;\n+\t\t}\n+\n+\t\tdev->virtqueue[i] = vq;\n+\t\tinit_vring_queue(dev, vring_idx);\n+\t\trte_spinlock_init(&vq->access_lock);\n+\t\tvq->avail_wrap_counter = 1;\n+\t\tvq->used_wrap_counter = 1;\n+\t\tvq->signalled_used_valid = false;\n+\t}\n \n-\tdev->nr_vring += 1;\n+\tdev->nr_vring = RTE_MAX(dev->nr_vring, vring_idx + 1);\n \n \treturn 0;\n }\n",
    "prefixes": [
        "1/7"
    ]
}