get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 81403,
    "url": "http://patches.dpdk.org/api/patches/81403/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20201019173415.582407-8-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-8-maxime.coquelin@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201019173415.582407-8-maxime.coquelin@redhat.com",
    "date": "2020-10-19T17:34:15",
    "name": "[7/7] vhost: check virtqueue metadata pointer",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "0edd7e892db00546159d0527f7ee53a3afd00d39",
    "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-8-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/81403/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/81403/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 61228A04DC;\n\tMon, 19 Oct 2020 19:36:57 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 5B9B2FC5C;\n\tMon, 19 Oct 2020 19:34:48 +0200 (CEST)",
            "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [216.205.24.124])\n by dpdk.org (Postfix) with ESMTP id 33022FC43\n for <dev@dpdk.org>; Mon, 19 Oct 2020 19:34:41 +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-111-f2ZbkmMwP72PeRlZm6eZqQ-1; Mon, 19 Oct 2020 13:34:36 -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 CA9871006C83;\n Mon, 19 Oct 2020 17:34:35 +0000 (UTC)",
            "from localhost.localdomain (unknown [10.36.110.40])\n by smtp.corp.redhat.com (Postfix) with ESMTP id BBAC26EF59;\n Mon, 19 Oct 2020 17:34:34 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1603128879;\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=9c78PomoiinOtXMEYzFgC5T4ohVIK2EWZwv0g5z+hxo=;\n b=QgLzpa/6PjjOOxCHpCAJrE4/vGNT+ocKU1BUpa3BYyASFV4KQj2KXz2RZZveuODU2V9cds\n QfOpu8p8t2JshNnHCh59B8tj0GVc3rW3H0p2VcPArasMNLUpRBaPrvz6i5CBzaoipTW+gH\n E13WChjDZ0vWSJB5+MCy0TYKFRZC1W8=",
        "X-MC-Unique": "f2ZbkmMwP72PeRlZm6eZqQ-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>",
        "Date": "Mon, 19 Oct 2020 19:34:15 +0200",
        "Message-Id": "<20201019173415.582407-8-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 7/7] vhost: check virtqueue metadata pointer",
        "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": "This patch checks whether the virtqueue metadata pointer\nis valid before dereferencing it. It is not considered\na fix as earlier patch ensures there are no holes in the\narray of virtqueue metadata pointers.\n\nSigned-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>\n---\n lib/librte_vhost/vhost.c      | 11 +++++++++++\n lib/librte_vhost/vhost_user.c | 12 ++++++++++++\n 2 files changed, 23 insertions(+)",
    "diff": "diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c\nindex e92ff618ac..8a151a9c1d 100644\n--- a/lib/librte_vhost/vhost.c\n+++ b/lib/librte_vhost/vhost.c\n@@ -544,6 +544,11 @@ init_vring_queue(struct virtio_net *dev, uint32_t vring_idx)\n \t}\n \n \tvq = dev->virtqueue[vring_idx];\n+\tif (!vq) {\n+\t\tVHOST_LOG_CONFIG(ERR, \"Virtqueue not allocated (%d)\\n\",\n+\t\t\t\tvring_idx);\n+\t\treturn;\n+\t}\n \n \tmemset(vq, 0, sizeof(struct vhost_virtqueue));\n \n@@ -570,6 +575,12 @@ reset_vring_queue(struct virtio_net *dev, uint32_t vring_idx)\n \t}\n \n \tvq = dev->virtqueue[vring_idx];\n+\tif (!vq) {\n+\t\tVHOST_LOG_CONFIG(ERR, \"Virtqueue not allocated (%d)\\n\",\n+\t\t\t\tvring_idx);\n+\t\treturn;\n+\t}\n+\n \tcallfd = vq->callfd;\n \tinit_vring_queue(dev, vring_idx);\n \tvq->callfd = callfd;\ndiff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c\nindex d20c8c57ad..8a8726f8b8 100644\n--- a/lib/librte_vhost/vhost_user.c\n+++ b/lib/librte_vhost/vhost_user.c\n@@ -1235,6 +1235,9 @@ vhost_user_set_mem_table(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \tfor (i = 0; i < dev->nr_vring; i++) {\n \t\tstruct vhost_virtqueue *vq = dev->virtqueue[i];\n \n+\t\tif (!vq)\n+\t\t\tcontinue;\n+\n \t\tif (vq->desc || vq->avail || vq->used) {\n \t\t\t/*\n \t\t\t * If the memory table got updated, the ring addresses\n@@ -1556,6 +1559,9 @@ vhost_user_set_inflight_fd(struct virtio_net **pdev, VhostUserMsg *msg,\n \n \tfor (i = 0; i < num_queues; i++) {\n \t\tvq = dev->virtqueue[i];\n+\t\tif (!vq)\n+\t\t\tcontinue;\n+\n \t\tif (vq_is_packed(dev)) {\n \t\t\tvq->inflight_packed = addr;\n \t\t\tvq->inflight_packed->desc_num = queue_size;\n@@ -2310,6 +2316,9 @@ vhost_user_iotlb_msg(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\tfor (i = 0; i < dev->nr_vring; i++) {\n \t\t\tstruct vhost_virtqueue *vq = dev->virtqueue[i];\n \n+\t\t\tif (!vq)\n+\t\t\t\tcontinue;\n+\n \t\t\tvhost_user_iotlb_cache_insert(vq, imsg->iova, vva,\n \t\t\t\t\tlen, imsg->perm);\n \n@@ -2321,6 +2330,9 @@ vhost_user_iotlb_msg(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\tfor (i = 0; i < dev->nr_vring; i++) {\n \t\t\tstruct vhost_virtqueue *vq = dev->virtqueue[i];\n \n+\t\t\tif (!vq)\n+\t\t\t\tcontinue;\n+\n \t\t\tvhost_user_iotlb_cache_remove(vq, imsg->iova,\n \t\t\t\t\timsg->size);\n \n",
    "prefixes": [
        "7/7"
    ]
}