get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 64773,
    "url": "http://patchwork.dpdk.org/api/patches/64773/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20200116104427.3810-1-maxime.coquelin@redhat.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": "<20200116104427.3810-1-maxime.coquelin@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200116104427.3810-1-maxime.coquelin@redhat.com",
    "date": "2020-01-16T10:44:27",
    "name": "vhost: catch overflow causing mmap of size 0",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "bec5af0854941ae2d307a6a1fca6a3d2a68ed2b6",
    "submitter": {
        "id": 512,
        "url": "http://patchwork.dpdk.org/api/people/512/?format=api",
        "name": "Maxime Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "delegate": {
        "id": 2642,
        "url": "http://patchwork.dpdk.org/api/users/2642/?format=api",
        "username": "mcoquelin",
        "first_name": "Maxime",
        "last_name": "Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20200116104427.3810-1-maxime.coquelin@redhat.com/mbox/",
    "series": [
        {
            "id": 8156,
            "url": "http://patchwork.dpdk.org/api/series/8156/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=8156",
            "date": "2020-01-16T10:44:27",
            "name": "vhost: catch overflow causing mmap of size 0",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/8156/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/64773/comments/",
    "check": "fail",
    "checks": "http://patchwork.dpdk.org/api/patches/64773/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 D6781A0352;\n\tThu, 16 Jan 2020 11:44:41 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 6AE681C1E6;\n\tThu, 16 Jan 2020 11:44:41 +0100 (CET)",
            "from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com\n [205.139.110.61]) by dpdk.org (Postfix) with ESMTP id 14D8B1C1E5\n for <dev@dpdk.org>; Thu, 16 Jan 2020 11:44:39 +0100 (CET)",
            "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-280-byhxRn2HNPKYIJJ5fkN9_A-1; Thu, 16 Jan 2020 05:44:38 -0500",
            "from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com\n [10.5.11.23])\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 DB5C61800D48;\n Thu, 16 Jan 2020 10:44:36 +0000 (UTC)",
            "from localhost.localdomain (unknown [10.36.112.13])\n by smtp.corp.redhat.com (Postfix) with ESMTP id 10AE919C5B;\n Thu, 16 Jan 2020 10:44:32 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1579171479;\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 bh=gVMp1Cyrjh/nJk4Qy2iMqZOTqNhiKLlMcSHvzHtVg3I=;\n b=fYTX1wrz8r+pYh5jEDTtIyc+vxX0Pd8nTPLSARDwvt14sn97D6POOJdyK97d8nIcnD1y9O\n 2EkN0yZHzcp7DbO4Vlli01otSdFb6P8+gmScNiSLUxb/1R+KHnP6jZ36Av7IVQ0Y71qm+2\n c0L9E3bvSqtwoSNOG5xRNl+5pz2Gz3Q=",
        "From": "Maxime Coquelin <maxime.coquelin@redhat.com>",
        "To": "dev@dpdk.org,\n\ttiwei.bie@intel.com,\n\tzhihong.wang@intel.com",
        "Cc": "Maxime Coquelin <maxime.coquelin@redhat.com>, stable@dpdk.org,\n Ilja Van Sprundel <ivansprundel@ioactive.com>",
        "Date": "Thu, 16 Jan 2020 11:44:27 +0100",
        "Message-Id": "<20200116104427.3810-1-maxime.coquelin@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 2.84 on 10.5.11.23",
        "X-MC-Unique": "byhxRn2HNPKYIJJ5fkN9_A-1",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Type": "text/plain; charset=US-ASCII",
        "Content-Transfer-Encoding": "quoted-printable",
        "Subject": "[dpdk-dev] [PATCH] vhost: catch overflow causing mmap of size 0",
        "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 catches an overflow that could happen if an\ninvalid region size or page alignement is provided by the\nguest via the VHOST_USER_SET_MEM_TABLE request.\n\nIf the sum of the size to mmap and the alignment overflows\nuint64_t, then RTE_ALIGN_CEIL(mmap_size, alignment) macro\nwill return 0. This value was passed as is as size argument\nto mmap().\n\nWhile kernel handling of mmap() syscall returns an error\nif size is 0, it is better to catch it earlier and provide\na meaningful error log.\n\nFixes: ec09c280b839 (\"vhost: fix mmap not aligned with hugepage size\")\nCc: stable@dpdk.org\n\nReported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>\nSigned-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>\n---\n lib/librte_vhost/vhost_user.c | 15 +++++++++++++++\n 1 file changed, 15 insertions(+)",
    "diff": "diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c\nindex 0b7d1e288e..41ec069cb6 100644\n--- a/lib/librte_vhost/vhost_user.c\n+++ b/lib/librte_vhost/vhost_user.c\n@@ -1145,6 +1145,21 @@ vhost_user_set_mem_table(struct virtio_net **pdev, struct VhostUserMsg *msg,\n \t\t\tgoto err_mmap;\n \t\t}\n \t\tmmap_size = RTE_ALIGN_CEIL(mmap_size, alignment);\n+\t\tif (mmap_size == 0) {\n+\t\t\t/*\n+\t\t\t * It could happen if initial mmap_size + alignment\n+\t\t\t * overflows the sizeof uint64, which could happen if\n+\t\t\t * either mmap_size or alignment value is wrong.\n+\t\t\t *\n+\t\t\t * mmap() kernel implementation would return an error,\n+\t\t\t * but better catch it before and provide useful info\n+\t\t\t * in the logs.\n+\t\t\t */\n+\t\t\tVHOST_LOG_CONFIG(ERR, \"mmap size (0x%\" PRIx64 \") \"\n+\t\t\t\t\t\"or alignment (0x%\" PRIx64 \") is invalid\\n\",\n+\t\t\t\t\treg->size + mmap_offset, alignment);\n+\t\t\tgoto err_mmap;\n+\t\t}\n \n \t\tpopulate = (dev->dequeue_zero_copy) ? MAP_POPULATE : 0;\n \t\tmmap_addr = mmap(NULL, mmap_size, PROT_READ | PROT_WRITE,\n",
    "prefixes": []
}