get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 772612,
    "url": "http://patchwork.ozlabs.org/api/patches/772612/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20170607094313.32060-1-alice.michael@intel.com/",
    "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": "<20170607094313.32060-1-alice.michael@intel.com>",
    "list_archive_url": null,
    "date": "2017-06-07T09:43:01",
    "name": "[next,S72-V3,01/13] i40evf: assign num_active_queues inside i40evf_alloc_queues",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "07d327754761397515a58506f8b3937dbaa29546",
    "submitter": {
        "id": 71123,
        "url": "http://patchwork.ozlabs.org/api/people/71123/?format=api",
        "name": "Michael, Alice",
        "email": "alice.michael@intel.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/20170607094313.32060-1-alice.michael@intel.com/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/772612/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/772612/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"
        ],
        "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 3wjbbF1n48z9sDG\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  8 Jun 2017 03:46:48 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 6BA0C87A28;\n\tWed,  7 Jun 2017 17:46:47 +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 1cDk3DXnECTr; Wed,  7 Jun 2017 17:46:46 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 8591E87A13;\n\tWed,  7 Jun 2017 17:46:46 +0000 (UTC)",
            "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\tby ash.osuosl.org (Postfix) with ESMTP id 5408A1C3EB9\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed,  7 Jun 2017 17:46:44 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 4F12589492\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed,  7 Jun 2017 17:46:44 +0000 (UTC)",
            "from hemlock.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id uounKICMANzp for <intel-wired-lan@lists.osuosl.org>;\n\tWed,  7 Jun 2017 17:46:42 +0000 (UTC)",
            "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n\tby hemlock.osuosl.org (Postfix) with ESMTPS id D8A8B89379\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed,  7 Jun 2017 17:46:42 +0000 (UTC)",
            "from orsmga004.jf.intel.com ([10.7.209.38])\n\tby orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t07 Jun 2017 10:46:41 -0700",
            "from unknown (HELO localhost.jf.intel.com) ([10.166.16.121])\n\tby orsmga004.jf.intel.com with ESMTP; 07 Jun 2017 10:46:41 -0700"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.39,311,1493708400\"; d=\"scan'208\";a=\"95650670\"",
        "From": "Alice Michael <alice.michael@intel.com>",
        "To": "alice.michael@intel.com,\n\tintel-wired-lan@lists.osuosl.org",
        "Date": "Wed,  7 Jun 2017 05:43:01 -0400",
        "Message-Id": "<20170607094313.32060-1-alice.michael@intel.com>",
        "X-Mailer": "git-send-email 2.9.3",
        "Subject": "[Intel-wired-lan] [next PATCH S72-V3 01/13] i40evf: assign\n\tnum_active_queues inside i40evf_alloc_queues",
        "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>",
        "MIME-Version": "1.0",
        "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: Jacob Keller <jacob.e.keller@intel.com>\n\nThe variable num_active_queues represents the number of active queues we\nhave for the device. We assign this pretty early in i40evf_init_subtask.\n\nSeveral code locations are written with loops over the tx_rings and\nrx_rings structures, which don't get allocated until\ni40evf_alloc_queues, and which get freed by i40evf_free_queues.\n\nThese call sites were written under the assumption that tx_rings and\nrx_rings would always be allocated at least when num_active_queues is\nnon-zero.\n\nLets fix this by moving the assignment into the function where we\nallocate queues. We'll use a temporary variable for storage so that we\ndon't assign the value in the adapter structure until after the rings\nhave been set up.\n\nFinally, when we free the queues, we'll clear the value to ensure that\nwe do not loop over the rings memory that no longer exists.\n\nThis resolves a possible NULL pointer derference in\ni40evf_get_ethtool_stats which could occur if the VF fails to recover\nfrom a reset, and then a user requests statistics.\n\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\n---\n drivers/net/ethernet/intel/i40evf/i40evf_main.c | 18 +++++++++++-------\n 1 file changed, 11 insertions(+), 7 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c\nindex 3a3ca96..7c213a3 100644\n--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c\n+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c\n@@ -1198,6 +1198,7 @@ static void i40evf_free_queues(struct i40evf_adapter *adapter)\n {\n \tif (!adapter->vsi_res)\n \t\treturn;\n+\tadapter->num_active_queues = 0;\n \tkfree(adapter->tx_rings);\n \tadapter->tx_rings = NULL;\n \tkfree(adapter->rx_rings);\n@@ -1214,18 +1215,22 @@ static void i40evf_free_queues(struct i40evf_adapter *adapter)\n  **/\n static int i40evf_alloc_queues(struct i40evf_adapter *adapter)\n {\n-\tint i;\n+\tint i, num_active_queues;\n+\n+\tnum_active_queues = min_t(int,\n+\t\t\t\t  adapter->vsi_res->num_queue_pairs,\n+\t\t\t\t  (int)(num_online_cpus()));\n \n-\tadapter->tx_rings = kcalloc(adapter->num_active_queues,\n+\tadapter->tx_rings = kcalloc(num_active_queues,\n \t\t\t\t    sizeof(struct i40e_ring), GFP_KERNEL);\n \tif (!adapter->tx_rings)\n \t\tgoto err_out;\n-\tadapter->rx_rings = kcalloc(adapter->num_active_queues,\n+\tadapter->rx_rings = kcalloc(num_active_queues,\n \t\t\t\t    sizeof(struct i40e_ring), GFP_KERNEL);\n \tif (!adapter->rx_rings)\n \t\tgoto err_out;\n \n-\tfor (i = 0; i < adapter->num_active_queues; i++) {\n+\tfor (i = 0; i < num_active_queues; i++) {\n \t\tstruct i40e_ring *tx_ring;\n \t\tstruct i40e_ring *rx_ring;\n \n@@ -1247,6 +1252,8 @@ static int i40evf_alloc_queues(struct i40evf_adapter *adapter)\n \t\trx_ring->rx_itr_setting = (I40E_ITR_DYNAMIC | I40E_ITR_RX_DEF);\n \t}\n \n+\tadapter->num_active_queues = num_active_queues;\n+\n \treturn 0;\n \n err_out:\n@@ -2636,9 +2643,6 @@ static void i40evf_init_task(struct work_struct *work)\n \tadapter->watchdog_timer.data = (unsigned long)adapter;\n \tmod_timer(&adapter->watchdog_timer, jiffies + 1);\n \n-\tadapter->num_active_queues = min_t(int,\n-\t\t\t\t\t   adapter->vsi_res->num_queue_pairs,\n-\t\t\t\t\t   (int)(num_online_cpus()));\n \tadapter->tx_desc_count = I40EVF_DEFAULT_TXD;\n \tadapter->rx_desc_count = I40EVF_DEFAULT_RXD;\n \terr = i40evf_init_interrupt_scheme(adapter);\n",
    "prefixes": [
        "next",
        "S72-V3",
        "01/13"
    ]
}