get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 57822,
    "url": "http://patchwork.dpdk.org/api/patches/57822/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1566474836-30480-3-git-send-email-tallurix.chaitanya.babu@intel.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": "<1566474836-30480-3-git-send-email-tallurix.chaitanya.babu@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1566474836-30480-3-git-send-email-tallurix.chaitanya.babu@intel.com",
    "date": "2019-08-22T11:53:55",
    "name": "[v2,2/3] lib/eal: fix vfio unmap that succeeds unexpectedly",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "8cc2942a86dd5899633b714c1b64c72ba4fa3b33",
    "submitter": {
        "id": 1164,
        "url": "http://patchwork.dpdk.org/api/people/1164/?format=api",
        "name": "Chaitanya Babu, TalluriX",
        "email": "tallurix.chaitanya.babu@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1566474836-30480-3-git-send-email-tallurix.chaitanya.babu@intel.com/mbox/",
    "series": [
        {
            "id": 6108,
            "url": "http://patchwork.dpdk.org/api/series/6108/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=6108",
            "date": "2019-08-22T11:53:55",
            "name": null,
            "version": 2,
            "mbox": "http://patchwork.dpdk.org/series/6108/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/57822/comments/",
    "check": "fail",
    "checks": "http://patchwork.dpdk.org/api/patches/57822/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id A96B31BF8E;\n\tThu, 22 Aug 2019 13:55:01 +0200 (CEST)",
            "from mga12.intel.com (mga12.intel.com [192.55.52.136])\n\tby dpdk.org (Postfix) with ESMTP id C54C51BF83;\n\tThu, 22 Aug 2019 13:54:58 +0200 (CEST)",
            "from orsmga001.jf.intel.com ([10.7.209.18])\n\tby fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t22 Aug 2019 04:54:57 -0700",
            "from irvmail001.ir.intel.com ([163.33.26.43])\n\tby orsmga001.jf.intel.com with ESMTP; 22 Aug 2019 04:54:55 -0700",
            "from wgcvswdev001.ir.intel.com (wgcvswdev001.ir.intel.com\n\t[10.102.246.100])\n\tby irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id\n\tx7MBss2M022592; Thu, 22 Aug 2019 12:54:54 +0100",
            "from wgcvswdev001.ir.intel.com (localhost [127.0.0.1])\n\tby wgcvswdev001.ir.intel.com with ESMTP id x7MBsJbj030630;\n\tThu, 22 Aug 2019 12:54:19 +0100",
            "(from tchaitax@localhost)\n\tby wgcvswdev001.ir.intel.com with ? id x7MBsJjM030626;\n\tThu, 22 Aug 2019 12:54:19 +0100"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.64,416,1559545200\"; d=\"scan'208\";a=\"262836047\"",
        "From": "Chaitanya Babu Talluri <tallurix.chaitanya.babu@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "reshma.pattan@intel.com, jananeex.m.parthasarathy@intel.com,\n\tanatoly.burakov@intel.com,\n\tChaitanya Babu Talluri <tallurix.chaitanya.babu@intel.com>,\n\tstable@dpdk.org",
        "Date": "Thu, 22 Aug 2019 12:53:55 +0100",
        "Message-Id": "<1566474836-30480-3-git-send-email-tallurix.chaitanya.babu@intel.com>",
        "X-Mailer": "git-send-email 1.7.0.7",
        "In-Reply-To": "<1566392575-7965-1-git-send-email-tallurix.chaitanya.babu@intel.com>",
        "References": "<1566392575-7965-1-git-send-email-tallurix.chaitanya.babu@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v2 2/3] lib/eal: fix vfio unmap that succeeds\n\tunexpectedly",
        "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\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Unmapping page with a VA that is found in the list\nof current mappings will succeed even if the IOVA\nfor the chunk that is being unmapped,is mismatched.\n\nFix it by checking if IOVA address matches the\nexpected IOVA address exactly.\n\nFixes: 73a6390859 (\"vfio: allow to map other memory regions\")\nCc: stable@dpdk.org\n\nSigned-off-by: Chaitanya Babu Talluri <tallurix.chaitanya.babu@intel.com>\n---\n lib/librte_eal/linux/eal/eal_vfio.c | 13 ++++++-------\n 1 file changed, 6 insertions(+), 7 deletions(-)",
    "diff": "diff --git a/lib/librte_eal/linux/eal/eal_vfio.c b/lib/librte_eal/linux/eal/eal_vfio.c\nindex 104912077..04c284cb2 100644\n--- a/lib/librte_eal/linux/eal/eal_vfio.c\n+++ b/lib/librte_eal/linux/eal/eal_vfio.c\n@@ -184,13 +184,13 @@ find_user_mem_map(struct user_mem_maps *user_mem_maps, uint64_t addr,\n \t\tuint64_t iova, uint64_t len)\n {\n \tuint64_t va_end = addr + len;\n-\tuint64_t iova_end = iova + len;\n \tint i;\n \n \tfor (i = 0; i < user_mem_maps->n_maps; i++) {\n \t\tstruct user_mem_map *map = &user_mem_maps->maps[i];\n \t\tuint64_t map_va_end = map->addr + map->len;\n-\t\tuint64_t map_iova_end = map->iova + map->len;\n+\t\tuint64_t diff_addr_len = addr - map->addr;\n+\t\tuint64_t expected_iova = map->iova + diff_addr_len;\n \n \t\t/* check start VA */\n \t\tif (addr < map->addr || addr >= map_va_end)\n@@ -199,11 +199,10 @@ find_user_mem_map(struct user_mem_maps *user_mem_maps, uint64_t addr,\n \t\tif (va_end <= map->addr || va_end > map_va_end)\n \t\t\tcontinue;\n \n-\t\t/* check start IOVA */\n-\t\tif (iova < map->iova || iova >= map_iova_end)\n-\t\t\tcontinue;\n-\t\t/* check if IOVA end is within boundaries */\n-\t\tif (iova_end <= map->iova || iova_end > map_iova_end)\n+\t\t/* check whether user input iova is in sync with\n+\t\t * user_mem_map entry's iova\n+\t\t */\n+\t\tif (expected_iova != iova)\n \t\t\tcontinue;\n \n \t\t/* we've found our map */\n",
    "prefixes": [
        "v2",
        "2/3"
    ]
}