get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 98964,
    "url": "https://patches.dpdk.org/api/patches/98964/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20210916001416.39998-4-stephen@networkplumber.org/",
    "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": "<20210916001416.39998-4-stephen@networkplumber.org>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210916001416.39998-4-stephen@networkplumber.org",
    "date": "2021-09-16T00:14:07",
    "name": "[v9,03/12] bpf: allow self-xor operation",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "b234103a6fd67416c0365eb89ccda8c53285d6d4",
    "submitter": {
        "id": 27,
        "url": "https://patches.dpdk.org/api/people/27/?format=api",
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20210916001416.39998-4-stephen@networkplumber.org/mbox/",
    "series": [
        {
            "id": 18954,
            "url": "https://patches.dpdk.org/api/series/18954/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=18954",
            "date": "2021-09-16T00:14:04",
            "name": "Packet capture framework enhancements",
            "version": 9,
            "mbox": "https://patches.dpdk.org/series/18954/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/98964/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/98964/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 ED2CCA0C41;\n\tThu, 16 Sep 2021 02:14:37 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 8C674410F6;\n\tThu, 16 Sep 2021 02:14:27 +0200 (CEST)",
            "from mail-pj1-f51.google.com (mail-pj1-f51.google.com\n [209.85.216.51]) by mails.dpdk.org (Postfix) with ESMTP id 79FD6410E7\n for <dev@dpdk.org>; Thu, 16 Sep 2021 02:14:23 +0200 (CEST)",
            "by mail-pj1-f51.google.com with SMTP id\n g13-20020a17090a3c8d00b00196286963b9so6215106pjc.3\n for <dev@dpdk.org>; Wed, 15 Sep 2021 17:14:23 -0700 (PDT)",
            "from hermes.local (204-195-33-123.wavecable.com. [204.195.33.123])\n by smtp.gmail.com with ESMTPSA id 26sm1082252pgx.72.2021.09.15.17.14.21\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 15 Sep 2021 17:14:21 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=networkplumber-org.20150623.gappssmtp.com; s=20150623;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=8zLAH8JYngduUqqKn8lVvsuW5Di209PrcYAPwWhsz0I=;\n b=ZaNN/WcSUeZotziPjwgChptNMqhntBjM27n9Y3fwX8xGtjdi5BXfmS7IECC9/zdPxZ\n Bx4XFCsNUkdU670T3j0nLcznvQ92RIVnl8xM9huiDEPBzIlIb5UzO5f3Udz7+d9M65Ze\n phbOjm26pyRJ70+ueI0wjbGJibQB9TUqYNyr431hO97GZTLpaOk/f7x0ztK+nT1GFXq4\n waT1cagWXv6FSZ5CJ/AfwLMjbSbDGvD13Ohbbqx9KhG/N65oXkh9O2bLAzILLrKw/m2t\n J+UuHtbGwwVl+cdk+n2d9GE+GB04n/Sd+64keXinYHq4+/NyYDbSDEaun6J48oVQGmKu\n 0tRg==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20210112;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references:mime-version:content-transfer-encoding;\n bh=8zLAH8JYngduUqqKn8lVvsuW5Di209PrcYAPwWhsz0I=;\n b=kGswmAqMt4S+c/fwWvjji1xVGOMB0fpMOOb2RPimuVfWr6vwXOTskjc4NUGecHT3nS\n /bzllwCC0SDcgHGS8FKx9WDkvnJHldc/HzStxDbI8de2s6HvVSgKSVd/bkuCbrWLsjYS\n OhFY/r69rSw1T6S+sQSNhYHJ8nvJJrP5f1muROSTgT0fjm6s1LTgKAre0YuWY3xG8UHN\n Y6pZ03rLWahWjH3TywX1tsHfl5vIkgFGqbV5jq+YwIsZSHexhf2VPxDWHbEKxGxiOss5\n ZRBQb6g+o+h3KmbhWVeB7FXhW8dIdwEZAvhBKjRaPft8cAVwUa+0GbeSPmf2Ms4H6NTu\n ovaw==",
        "X-Gm-Message-State": "AOAM532vezZqkA00W+saElsYFpAC1ERYUilR++lQQMPWfiBGsUWyePN7\n V1vnBeMo4gL76shoUvRj6oBHdfDzZNe4KA==",
        "X-Google-Smtp-Source": "\n ABdhPJy6K+eroURQuXUy3bo7NtqDo0qYTXbHVlRLFCGAFkVkyTg/1dFaWZh6ZnDxJmPtCDdKsrc9Kw==",
        "X-Received": "by 2002:a17:90b:4b89:: with SMTP id\n lr9mr11370489pjb.145.1631751262327;\n Wed, 15 Sep 2021 17:14:22 -0700 (PDT)",
        "From": "Stephen Hemminger <stephen@networkplumber.org>",
        "To": "dev@dpdk.org",
        "Cc": "Stephen Hemminger <stephen@networkplumber.org>,\n konstantin.ananyev@intel.com",
        "Date": "Wed, 15 Sep 2021 17:14:07 -0700",
        "Message-Id": "<20210916001416.39998-4-stephen@networkplumber.org>",
        "X-Mailer": "git-send-email 2.30.2",
        "In-Reply-To": "<20210916001416.39998-1-stephen@networkplumber.org>",
        "References": "<20210903004732.109023-1-stephen@networkplumber.org>\n <20210916001416.39998-1-stephen@networkplumber.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v9 03/12] bpf: allow self-xor operation",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Some BPF programs may use XOR of a register with itself\nas a way to zero register in one instruction.\nThe BPF filter converter generates this in the prolog\nto the generated code.\n\nThe BPF validator would not allow this because the value of\nregister was undefined. But after this operation it always zero.\n\nFixes: 8021917293d0 (\"bpf: add extra validation for input BPF program\")\nCc: konstantin.ananyev@intel.com\nSigned-off-by: Stephen Hemminger <stephen@networkplumber.org>\n---\n lib/bpf/bpf_validate.c | 9 ++++++++-\n 1 file changed, 8 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/lib/bpf/bpf_validate.c b/lib/bpf/bpf_validate.c\nindex 7b1291b382e9..853279fee557 100644\n--- a/lib/bpf/bpf_validate.c\n+++ b/lib/bpf/bpf_validate.c\n@@ -661,8 +661,15 @@ eval_alu(struct bpf_verifier *bvf, const struct ebpf_insn *ins)\n \n \top = BPF_OP(ins->code);\n \n+\t/* Allow self-xor as way to zero register */\n+\tif (op == BPF_XOR && BPF_SRC(ins->code) == BPF_X &&\n+\t    ins->src_reg == ins->dst_reg) {\n+\t\teval_fill_imm(&rs, UINT64_MAX, 0);\n+\t\teval_fill_imm(rd, UINT64_MAX, 0);\n+\t}\n+\n \terr = eval_defined((op != EBPF_MOV) ? rd : NULL,\n-\t\t\t(op != BPF_NEG) ? &rs : NULL);\n+\t\t\t   (op != BPF_NEG) ? &rs : NULL);\n \tif (err != NULL)\n \t\treturn err;\n \n",
    "prefixes": [
        "v9",
        "03/12"
    ]
}