get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 821355,
    "url": "http://patchwork.ozlabs.org/api/patches/821355/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20171004153903.13100.38029.stgit@localhost.localdomain/",
    "project": {
        "id": 46,
        "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api",
        "name": "Intel Wired Ethernet development",
        "link_name": "intel-wired-lan",
        "list_id": "intel-wired-lan.osuosl.org",
        "list_email": "intel-wired-lan@osuosl.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20171004153903.13100.38029.stgit@localhost.localdomain>",
    "list_archive_url": null,
    "date": "2017-10-04T15:44:43",
    "name": "[jkirsher/net-queue] i40e: Fix memory leak related filter programming status",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "18733e0277a4cf4d6af81f8ac94d995bf0847f65",
    "submitter": {
        "id": 252,
        "url": "http://patchwork.ozlabs.org/api/people/252/?format=api",
        "name": "Alexander Duyck",
        "email": "alexander.duyck@gmail.com"
    },
    "delegate": {
        "id": 68,
        "url": "http://patchwork.ozlabs.org/api/users/68/?format=api",
        "username": "jtkirshe",
        "first_name": "Jeff",
        "last_name": "Kirsher",
        "email": "jeffrey.t.kirsher@intel.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20171004153903.13100.38029.stgit@localhost.localdomain/mbox/",
    "series": [
        {
            "id": 6395,
            "url": "http://patchwork.ozlabs.org/api/series/6395/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=6395",
            "date": "2017-10-04T15:44:43",
            "name": "[jkirsher/net-queue] i40e: Fix memory leak related filter programming status",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/6395/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/821355/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/821355/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<intel-wired-lan-bounces@osuosl.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=osuosl.org\n\t(client-ip=140.211.166.137; helo=fraxinus.osuosl.org;\n\tenvelope-from=intel-wired-lan-bounces@osuosl.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"rVopvA5Q\"; dkim-atps=neutral"
        ],
        "Received": [
            "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y6gFc1J5dz9t16\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  5 Oct 2017 02:44:51 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 12BF0875FE;\n\tWed,  4 Oct 2017 15:44:50 +0000 (UTC)",
            "from fraxinus.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id sS5qbyZkgPHn; Wed,  4 Oct 2017 15:44:48 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 961E787407;\n\tWed,  4 Oct 2017 15:44:48 +0000 (UTC)",
            "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ash.osuosl.org (Postfix) with ESMTP id 9893C1CE750\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed,  4 Oct 2017 15:44:46 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 90BF8884D5\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed,  4 Oct 2017 15:44:46 +0000 (UTC)",
            "from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id iM3ukcyzVkQl for <intel-wired-lan@lists.osuosl.org>;\n\tWed,  4 Oct 2017 15:44:45 +0000 (UTC)",
            "from mail-pf0-f195.google.com (mail-pf0-f195.google.com\n\t[209.85.192.195])\n\tby whitealder.osuosl.org (Postfix) with ESMTPS id C1E39872CC\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed,  4 Oct 2017 15:44:45 +0000 (UTC)",
            "by mail-pf0-f195.google.com with SMTP id g65so12640708pfe.1\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 04 Oct 2017 08:44:45 -0700 (PDT)",
            "from localhost.localdomain ([2001:470:b:9c3:9e5c:8eff:fe4f:f2d0])\n\tby smtp.gmail.com with ESMTPSA id\n\tz8sm7639099pfl.135.2017.10.04.08.44.44\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tWed, 04 Oct 2017 08:44:44 -0700 (PDT)"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=subject:from:to:cc:date:message-id:user-agent:mime-version\n\t:content-transfer-encoding;\n\tbh=RUCfMZT3qc90/VxFNP4RQ8lmDs5fPBjoAUMfUwjxVFQ=;\n\tb=rVopvA5Q7py+ccBwWs1OZR3y70gzUuGheUNnps0h3sBg78MpUyDVN76qeImKWpc+94\n\tNnQQVfixLwGDUz7yr3mi2LJ6RtaSqWIUDQCa+8ygu0aSAm703rtGHOSjYjD2hlHE+o5u\n\tEZooaBSvKU6UJFXENePiYUHRHsnAICEALMEpGlIcml2aAamwnm658aTEghY2nKcpKd9w\n\tAHWwD5x8hnHx5/XihQdThpQ8m/aYFQ7veGmZhMiS+PSH3DiNNjMVuWYN0mRDtR5zWXp8\n\tdp9+tyqcIiPQJqjcqNX0NgQZCl3DKIpQ9KD7Se2JBM6x7nOzchAlFMyvlEse07bvtvlz\n\trWvA==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:from:to:cc:date:message-id:user-agent\n\t:mime-version:content-transfer-encoding;\n\tbh=RUCfMZT3qc90/VxFNP4RQ8lmDs5fPBjoAUMfUwjxVFQ=;\n\tb=mw3W5V6Nq3VgQ2DDdN7lEXwU84jmklo8QUyVzQy5FRoGchnSu2rI1e9W/QQlcKXhza\n\tVcDfO3NykmUi66X5NMQpZ8NjD/2HwTTVpS1UcDs0d+hCWwNxb/zvEH0bSVepavpxvj7E\n\to+F3jRk1uGtG75msQq3RGbN1/+miXqXnvpL0KSvHY5HF3x4A2DoibLFrPxzMYY8T3e/r\n\tF0oW6kLRxb31d9+jUX4EsxVtZFvLON7n3ofCXHrqIgxRaXc8bUcP9YH9h/LN39YD231h\n\tvWTnFSO/WceoULUEOD4rzp4PJcp20az8AEzhp++/pOCubfTn19LGvIJJbScv1gH4sGWW\n\tNhcQ==",
        "X-Gm-Message-State": "AHPjjUiuVF6GZQ8tXCQ7kP4wa4jTXI5cx53WNLkTAASB7pSAxRVdh9E5\n\t96Vq9tp8nJ0CCd8L/YgH5h0=",
        "X-Google-Smtp-Source": "AOwi7QDi3wCy/zbMRD/JWWVYfgcUdE8P1QH03EOjvONKYn32DBdzKQ7BoIISHb3J8l5PG+VsT0xwvw==",
        "X-Received": "by 10.98.65.20 with SMTP id o20mr20970646pfa.211.1507131885279; \n\tWed, 04 Oct 2017 08:44:45 -0700 (PDT)",
        "From": "Alexander Duyck <alexander.duyck@gmail.com>",
        "To": "netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org",
        "Date": "Wed, 04 Oct 2017 08:44:43 -0700",
        "Message-ID": "<20171004153903.13100.38029.stgit@localhost.localdomain>",
        "User-Agent": "StGit/0.17.1-dirty",
        "MIME-Version": "1.0",
        "Cc": "akp@cohaesio.com",
        "Subject": "[Intel-wired-lan] [jkirsher/net-queue PATCH] i40e: Fix memory leak\n\trelated filter programming status",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.18-1",
        "Precedence": "list",
        "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>",
        "List-Post": "<mailto:intel-wired-lan@osuosl.org>",
        "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>",
        "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "intel-wired-lan-bounces@osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"
    },
    "content": "From: Alexander Duyck <alexander.h.duyck@intel.com>\n\nIt looks like we weren't correctly placing the pages from buffers that had\nbeen used to return a filter programming status back on the ring. As a\nresult they were being overwritten and tracking of the pages was lost.\n\nThis change works to correct that by incorporating part of\ni40e_put_rx_buffer into the programming status handler code. As a result we\nshould now be correctly placing the pages for those buffers on the\nre-allocation list instead of letting them stay in place.\n\nFixes: 0e626ff7ccbf (\"i40e: Fix support for flow director programming status\")\nReported-by: Anders K. Pedersen <akp@cohaesio.com>\nSigned-off-by: Alexander Duyck <alexander.h.duyck@intel.com>\n---\n\nI'm submitting this for Jeff's net queue to undergo some additional testing\nbefore being submitted for net or stable to address the memory leak isue. The\ntesting for this should be pretty straight forward since ATR filters seem\nto cause the issue it should be possible to trigger a pretty signficant\namount of memory loss running something like a netperf TCP_CRR test for an\nextended period of time which will trigger multiple socket\ncreation/destruction.\n\nAnders, feel free to test this patch. If you need to grab a copy of the",
    "diff": "diff instead of trying to work with applying the patch through email you\nshould be able to find a copy at the following URL shortly after I submit\nthis to intel-wired-lan:\n\thttp://patchwork.ozlabs.org/project/intel-wired-lan/list/\n\n drivers/net/ethernet/intel/i40e/i40e_txrx.c |   63 +++++++++++++++------------\n 1 file changed, 36 insertions(+), 27 deletions(-)\n\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\nindex 94311e3e4f43..d4ae24674a70 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n@@ -1038,6 +1038,32 @@ static bool i40e_set_new_dynamic_itr(struct i40e_ring_container *rc)\n }\n \n /**\n+ * i40e_reuse_rx_page - page flip buffer and store it back on the ring\n+ * @rx_ring: rx descriptor ring to store buffers on\n+ * @old_buff: donor buffer to have page reused\n+ *\n+ * Synchronizes page for reuse by the adapter\n+ **/\n+static void i40e_reuse_rx_page(struct i40e_ring *rx_ring,\n+\t\t\t       struct i40e_rx_buffer *old_buff)\n+{\n+\tstruct i40e_rx_buffer *new_buff;\n+\tu16 nta = rx_ring->next_to_alloc;\n+\n+\tnew_buff = &rx_ring->rx_bi[nta];\n+\n+\t/* update, and store next to alloc */\n+\tnta++;\n+\trx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0;\n+\n+\t/* transfer page from old buffer to new buffer */\n+\tnew_buff->dma\t\t= old_buff->dma;\n+\tnew_buff->page\t\t= old_buff->page;\n+\tnew_buff->page_offset\t= old_buff->page_offset;\n+\tnew_buff->pagecnt_bias\t= old_buff->pagecnt_bias;\n+}\n+\n+/**\n  * i40e_rx_is_programming_status - check for programming status descriptor\n  * @qw: qword representing status_error_len in CPU ordering\n  *\n@@ -1071,15 +1097,24 @@ static void i40e_clean_programming_status(struct i40e_ring *rx_ring,\n \t\t\t\t\t  union i40e_rx_desc *rx_desc,\n \t\t\t\t\t  u64 qw)\n {\n-\tu32 ntc = rx_ring->next_to_clean + 1;\n+\tstruct i40e_rx_buffer *rx_buffer;\n+\tu32 ntc = rx_ring->next_to_clean;\n \tu8 id;\n \n \t/* fetch, update, and store next to clean */\n+\trx_buffer = &rx_ring->rx_bi[ntc++];\n \tntc = (ntc < rx_ring->count) ? ntc : 0;\n \trx_ring->next_to_clean = ntc;\n \n \tprefetch(I40E_RX_DESC(rx_ring, ntc));\n \n+\t/* place unused page back on the ring */\n+\ti40e_reuse_rx_page(rx_ring, rx_buffer);\n+\trx_ring->rx_stats.page_reuse_count++;\n+\n+\t/* clear contents of buffer_info */\n+\trx_buffer->page = NULL;\n+\n \tid = (qw & I40E_RX_PROG_STATUS_DESC_QW1_PROGID_MASK) >>\n \t\t  I40E_RX_PROG_STATUS_DESC_QW1_PROGID_SHIFT;\n \n@@ -1648,32 +1683,6 @@ static bool i40e_cleanup_headers(struct i40e_ring *rx_ring, struct sk_buff *skb,\n }\n \n /**\n- * i40e_reuse_rx_page - page flip buffer and store it back on the ring\n- * @rx_ring: rx descriptor ring to store buffers on\n- * @old_buff: donor buffer to have page reused\n- *\n- * Synchronizes page for reuse by the adapter\n- **/\n-static void i40e_reuse_rx_page(struct i40e_ring *rx_ring,\n-\t\t\t       struct i40e_rx_buffer *old_buff)\n-{\n-\tstruct i40e_rx_buffer *new_buff;\n-\tu16 nta = rx_ring->next_to_alloc;\n-\n-\tnew_buff = &rx_ring->rx_bi[nta];\n-\n-\t/* update, and store next to alloc */\n-\tnta++;\n-\trx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0;\n-\n-\t/* transfer page from old buffer to new buffer */\n-\tnew_buff->dma\t\t= old_buff->dma;\n-\tnew_buff->page\t\t= old_buff->page;\n-\tnew_buff->page_offset\t= old_buff->page_offset;\n-\tnew_buff->pagecnt_bias\t= old_buff->pagecnt_bias;\n-}\n-\n-/**\n  * i40e_page_is_reusable - check if any reuse is possible\n  * @page: page struct to check\n  *\n",
    "prefixes": [
        "jkirsher/net-queue"
    ]
}