get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 833258,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/833258/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/20171102083136.2096-3-jakub.kicinski@netronome.com/",
    "project": {
        "id": 7,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/7/?format=api",
        "name": "Linux network development",
        "link_name": "netdev",
        "list_id": "netdev.vger.kernel.org",
        "list_email": "netdev@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20171102083136.2096-3-jakub.kicinski@netronome.com>",
    "list_archive_url": null,
    "date": "2017-11-02T08:31:30",
    "name": "[net-next,2/8] nfp: flower: vxlan - ensure no sleep in atomic context",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "5ddaa81a215f0fec9714c927b2135c850ad46bf9",
    "submitter": {
        "id": 67484,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/67484/?format=api",
        "name": "Jakub Kicinski",
        "email": "jakub.kicinski@netronome.com"
    },
    "delegate": {
        "id": 34,
        "url": "http://patchwork.ozlabs.org/api/1.2/users/34/?format=api",
        "username": "davem",
        "first_name": "David",
        "last_name": "Miller",
        "email": "davem@davemloft.net"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/20171102083136.2096-3-jakub.kicinski@netronome.com/mbox/",
    "series": [
        {
            "id": 11454,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/11454/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=11454",
            "date": "2017-11-02T08:31:28",
            "name": "nfp: TC block fixes, app fallback and dev_alloc()",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/11454/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/833258/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/833258/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<netdev-owner@vger.kernel.org>",
        "X-Original-To": "patchwork-incoming@ozlabs.org",
        "Delivered-To": "patchwork-incoming@ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=netronome-com.20150623.gappssmtp.com\n\theader.i=@netronome-com.20150623.gappssmtp.com\n\theader.b=\"lQpbxzGG\"; dkim-atps=neutral"
        ],
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3ySJJm3TBmz9t2l\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu,  2 Nov 2017 19:33:44 +1100 (AEDT)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S932982AbdKBId0 (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tThu, 2 Nov 2017 04:33:26 -0400",
            "from mail-pf0-f194.google.com ([209.85.192.194]:46082 \"EHLO\n\tmail-pf0-f194.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1755414AbdKBIcY (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Thu, 2 Nov 2017 04:32:24 -0400",
            "by mail-pf0-f194.google.com with SMTP id p87so4053594pfj.3\n\tfor <netdev@vger.kernel.org>; Thu, 02 Nov 2017 01:32:23 -0700 (PDT)",
            "from jkicinski-Precision-T1700.netronome.com ([75.53.12.129])\n\tby smtp.gmail.com with ESMTPSA id\n\tz13sm5390484pgc.29.2017.11.02.01.32.22\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tThu, 02 Nov 2017 01:32:22 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=netronome-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=uLTqomy3RuzBjDbk5p0p2Hw/9xH2gCuCI09POtz4JoM=;\n\tb=lQpbxzGG4WXXPjckVcqZDI0tQej5/aTk4TwEaZIRdQQ7Pi7Ogxrg+DE3E/2VLOTPg7\n\tS6+XNxK8lqL1qgKWUKzTPSn1EgbJGUHcbyd2AMPB6j6SisNg+3+USsNrfVWiSNI+VNr8\n\tGaA6dnjYUQSMKhz5ZCXepXLCXy3tBBzKdqoNRNQCryTDMbRkWZ8rGg/9w7ZShzPKcRgL\n\tscXjyzOzwiMkLbhMDtddlYE3g2ky3iT7dVY+uP7X+swf3hfqHXrQASk+D2AxEc70bwcC\n\tOg+YmxLAuFFReBktkCnfuuNYfeLKD0QIH5PSzX5a7NQJyrlFjJkWrubBHFk70RiflJ1S\n\teirA==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=uLTqomy3RuzBjDbk5p0p2Hw/9xH2gCuCI09POtz4JoM=;\n\tb=G3GCE6s5ZHz5jD+lL18qKuafcMxjBSfHN50zhGb6de6jT1M7g8pytVQEZ/hw+2e0oH\n\treaZoYM+YXA9IVg65AZz0PipWAcXsNAdma1EktryiuS6o1WwV+hTC7bGI2N5Ts27SIB4\n\tRs4akT/YrT+q/yoUBRILJ7unQ1vES9THZlhBrSNMIUOzLzuzhFKkEhD8I45rPjMk180N\n\tG0rVfn0B+zYTWIIlLDg8STVh1vtChbmu5hgmPNTFMgOlG05kupLqwQKjxfXWmI5wYLyP\n\tDUaG8H+gsSxhiNi59XNHYtObEpblDOtt8SCWobEHG/bEyutcFE8410eR1d+M/ne7Nnxe\n\t1+Vg==",
        "X-Gm-Message-State": "AMCzsaWZNrJe3qoquZiPp9l4XLzymPyD/DO93IJcCZWt9sTJfFxNBBcL\n\tMiqNq0QgwkIMZlvneSsrXaLLUGbp",
        "X-Google-Smtp-Source": "ABhQp+SUJ0p9fOEvPXPADlsYaSJHK4rk0WhX0jt8Qve0hIkjTRugITgTuKBfOwB5gCZXceIcehKmSg==",
        "X-Received": "by 10.98.139.132 with SMTP id e4mr2941318pfl.172.1509611543228; \n\tThu, 02 Nov 2017 01:32:23 -0700 (PDT)",
        "From": "Jakub Kicinski <jakub.kicinski@netronome.com>",
        "To": "netdev@vger.kernel.org",
        "Cc": "oss-drivers@netronome.com, John Hurley <john.hurley@netronome.com>",
        "Subject": "[PATCH net-next 2/8] nfp: flower: vxlan - ensure no sleep in atomic\n\tcontext",
        "Date": "Thu,  2 Nov 2017 01:31:30 -0700",
        "Message-Id": "<20171102083136.2096-3-jakub.kicinski@netronome.com>",
        "X-Mailer": "git-send-email 2.14.1",
        "In-Reply-To": "<20171102083136.2096-1-jakub.kicinski@netronome.com>",
        "References": "<20171102083136.2096-1-jakub.kicinski@netronome.com>",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "From: John Hurley <john.hurley@netronome.com>\n\nFunctions called by the netevent notifier must be in atomic context.\nChange the mutex to spinlock and ensure mem allocations are done with the\natomic flag.\nAlso, remove unnecessary locking after notifiers are unregistered.\n\nSigned-off-by: John Hurley <john.hurley@netronome.com>\nReviewed-by: Simon Horman <simon.horman@netronome.com>\n---\n drivers/net/ethernet/netronome/nfp/flower/cmsg.c   |  9 +++--\n drivers/net/ethernet/netronome/nfp/flower/cmsg.h   |  2 +-\n drivers/net/ethernet/netronome/nfp/flower/main.h   |  2 +-\n .../net/ethernet/netronome/nfp/flower/offload.c    |  2 +-\n .../ethernet/netronome/nfp/flower/tunnel_conf.c    | 47 +++++++++-------------\n 5 files changed, 28 insertions(+), 34 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/netronome/nfp/flower/cmsg.c b/drivers/net/ethernet/netronome/nfp/flower/cmsg.c\nindex 6b71c719deba..e98bb9cdb6a3 100644\n--- a/drivers/net/ethernet/netronome/nfp/flower/cmsg.c\n+++ b/drivers/net/ethernet/netronome/nfp/flower/cmsg.c\n@@ -50,14 +50,14 @@ nfp_flower_cmsg_get_hdr(struct sk_buff *skb)\n \n struct sk_buff *\n nfp_flower_cmsg_alloc(struct nfp_app *app, unsigned int size,\n-\t\t      enum nfp_flower_cmsg_type_port type)\n+\t\t      enum nfp_flower_cmsg_type_port type, gfp_t flag)\n {\n \tstruct nfp_flower_cmsg_hdr *ch;\n \tstruct sk_buff *skb;\n \n \tsize += NFP_FLOWER_CMSG_HLEN;\n \n-\tskb = nfp_app_ctrl_msg_alloc(app, size, GFP_KERNEL);\n+\tskb = nfp_app_ctrl_msg_alloc(app, size, flag);\n \tif (!skb)\n \t\treturn NULL;\n \n@@ -78,7 +78,8 @@ nfp_flower_cmsg_mac_repr_start(struct nfp_app *app, unsigned int num_ports)\n \tunsigned int size;\n \n \tsize = sizeof(*msg) + num_ports * sizeof(msg->ports[0]);\n-\tskb = nfp_flower_cmsg_alloc(app, size, NFP_FLOWER_CMSG_TYPE_MAC_REPR);\n+\tskb = nfp_flower_cmsg_alloc(app, size, NFP_FLOWER_CMSG_TYPE_MAC_REPR,\n+\t\t\t\t    GFP_KERNEL);\n \tif (!skb)\n \t\treturn NULL;\n \n@@ -109,7 +110,7 @@ int nfp_flower_cmsg_portmod(struct nfp_repr *repr, bool carrier_ok)\n \tstruct sk_buff *skb;\n \n \tskb = nfp_flower_cmsg_alloc(repr->app, sizeof(*msg),\n-\t\t\t\t    NFP_FLOWER_CMSG_TYPE_PORT_MOD);\n+\t\t\t\t    NFP_FLOWER_CMSG_TYPE_PORT_MOD, GFP_KERNEL);\n \tif (!skb)\n \t\treturn -ENOMEM;\n \ndiff --git a/drivers/net/ethernet/netronome/nfp/flower/cmsg.h b/drivers/net/ethernet/netronome/nfp/flower/cmsg.h\nindex 64e87f8e7089..66070741d55f 100644\n--- a/drivers/net/ethernet/netronome/nfp/flower/cmsg.h\n+++ b/drivers/net/ethernet/netronome/nfp/flower/cmsg.h\n@@ -458,6 +458,6 @@ void nfp_flower_cmsg_process_rx(struct work_struct *work);\n void nfp_flower_cmsg_rx(struct nfp_app *app, struct sk_buff *skb);\n struct sk_buff *\n nfp_flower_cmsg_alloc(struct nfp_app *app, unsigned int size,\n-\t\t      enum nfp_flower_cmsg_type_port type);\n+\t\t      enum nfp_flower_cmsg_type_port type, gfp_t flag);\n \n #endif\ndiff --git a/drivers/net/ethernet/netronome/nfp/flower/main.h b/drivers/net/ethernet/netronome/nfp/flower/main.h\nindex 12c319a219d8..c90e72b7ff5a 100644\n--- a/drivers/net/ethernet/netronome/nfp/flower/main.h\n+++ b/drivers/net/ethernet/netronome/nfp/flower/main.h\n@@ -115,7 +115,7 @@ struct nfp_flower_priv {\n \tstruct mutex nfp_mac_off_lock;\n \tstruct mutex nfp_mac_index_lock;\n \tstruct mutex nfp_ipv4_off_lock;\n-\tstruct mutex nfp_neigh_off_lock;\n+\tspinlock_t nfp_neigh_off_lock;\n \tstruct ida nfp_mac_off_ids;\n \tint nfp_mac_off_count;\n \tstruct notifier_block nfp_tun_mac_nb;\ndiff --git a/drivers/net/ethernet/netronome/nfp/flower/offload.c b/drivers/net/ethernet/netronome/nfp/flower/offload.c\nindex 95c2b9284857..cdbb5464b790 100644\n--- a/drivers/net/ethernet/netronome/nfp/flower/offload.c\n+++ b/drivers/net/ethernet/netronome/nfp/flower/offload.c\n@@ -95,7 +95,7 @@ nfp_flower_xmit_flow(struct net_device *netdev,\n \tnfp_flow->meta.mask_len >>= NFP_FL_LW_SIZ;\n \tnfp_flow->meta.act_len >>= NFP_FL_LW_SIZ;\n \n-\tskb = nfp_flower_cmsg_alloc(priv->app, tot_len, mtype);\n+\tskb = nfp_flower_cmsg_alloc(priv->app, tot_len, mtype, GFP_KERNEL);\n \tif (!skb)\n \t\treturn -ENOMEM;\n \ndiff --git a/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c b/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c\nindex c495f8f38506..b03f22f29612 100644\n--- a/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c\n+++ b/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c\n@@ -224,12 +224,13 @@ static bool nfp_tun_is_netdev_to_offload(struct net_device *netdev)\n }\n \n static int\n-nfp_flower_xmit_tun_conf(struct nfp_app *app, u8 mtype, u16 plen, void *pdata)\n+nfp_flower_xmit_tun_conf(struct nfp_app *app, u8 mtype, u16 plen, void *pdata,\n+\t\t\t gfp_t flag)\n {\n \tstruct sk_buff *skb;\n \tunsigned char *msg;\n \n-\tskb = nfp_flower_cmsg_alloc(app, plen, mtype);\n+\tskb = nfp_flower_cmsg_alloc(app, plen, mtype, flag);\n \tif (!skb)\n \t\treturn -ENOMEM;\n \n@@ -246,15 +247,15 @@ static bool nfp_tun_has_route(struct nfp_app *app, __be32 ipv4_addr)\n \tstruct nfp_ipv4_route_entry *entry;\n \tstruct list_head *ptr, *storage;\n \n-\tmutex_lock(&priv->nfp_neigh_off_lock);\n+\tspin_lock_bh(&priv->nfp_neigh_off_lock);\n \tlist_for_each_safe(ptr, storage, &priv->nfp_neigh_off_list) {\n \t\tentry = list_entry(ptr, struct nfp_ipv4_route_entry, list);\n \t\tif (entry->ipv4_addr == ipv4_addr) {\n-\t\t\tmutex_unlock(&priv->nfp_neigh_off_lock);\n+\t\t\tspin_unlock_bh(&priv->nfp_neigh_off_lock);\n \t\t\treturn true;\n \t\t}\n \t}\n-\tmutex_unlock(&priv->nfp_neigh_off_lock);\n+\tspin_unlock_bh(&priv->nfp_neigh_off_lock);\n \treturn false;\n }\n \n@@ -264,24 +265,24 @@ static void nfp_tun_add_route_to_cache(struct nfp_app *app, __be32 ipv4_addr)\n \tstruct nfp_ipv4_route_entry *entry;\n \tstruct list_head *ptr, *storage;\n \n-\tmutex_lock(&priv->nfp_neigh_off_lock);\n+\tspin_lock_bh(&priv->nfp_neigh_off_lock);\n \tlist_for_each_safe(ptr, storage, &priv->nfp_neigh_off_list) {\n \t\tentry = list_entry(ptr, struct nfp_ipv4_route_entry, list);\n \t\tif (entry->ipv4_addr == ipv4_addr) {\n-\t\t\tmutex_unlock(&priv->nfp_neigh_off_lock);\n+\t\t\tspin_unlock_bh(&priv->nfp_neigh_off_lock);\n \t\t\treturn;\n \t\t}\n \t}\n-\tentry = kmalloc(sizeof(*entry), GFP_KERNEL);\n+\tentry = kmalloc(sizeof(*entry), GFP_ATOMIC);\n \tif (!entry) {\n-\t\tmutex_unlock(&priv->nfp_neigh_off_lock);\n+\t\tspin_unlock_bh(&priv->nfp_neigh_off_lock);\n \t\tnfp_flower_cmsg_warn(app, \"Mem error when storing new route.\\n\");\n \t\treturn;\n \t}\n \n \tentry->ipv4_addr = ipv4_addr;\n \tlist_add_tail(&entry->list, &priv->nfp_neigh_off_list);\n-\tmutex_unlock(&priv->nfp_neigh_off_lock);\n+\tspin_unlock_bh(&priv->nfp_neigh_off_lock);\n }\n \n static void nfp_tun_del_route_from_cache(struct nfp_app *app, __be32 ipv4_addr)\n@@ -290,7 +291,7 @@ static void nfp_tun_del_route_from_cache(struct nfp_app *app, __be32 ipv4_addr)\n \tstruct nfp_ipv4_route_entry *entry;\n \tstruct list_head *ptr, *storage;\n \n-\tmutex_lock(&priv->nfp_neigh_off_lock);\n+\tspin_lock_bh(&priv->nfp_neigh_off_lock);\n \tlist_for_each_safe(ptr, storage, &priv->nfp_neigh_off_list) {\n \t\tentry = list_entry(ptr, struct nfp_ipv4_route_entry, list);\n \t\tif (entry->ipv4_addr == ipv4_addr) {\n@@ -299,12 +300,12 @@ static void nfp_tun_del_route_from_cache(struct nfp_app *app, __be32 ipv4_addr)\n \t\t\tbreak;\n \t\t}\n \t}\n-\tmutex_unlock(&priv->nfp_neigh_off_lock);\n+\tspin_unlock_bh(&priv->nfp_neigh_off_lock);\n }\n \n static void\n nfp_tun_write_neigh(struct net_device *netdev, struct nfp_app *app,\n-\t\t    struct flowi4 *flow, struct neighbour *neigh)\n+\t\t    struct flowi4 *flow, struct neighbour *neigh, gfp_t flag)\n {\n \tstruct nfp_tun_neigh payload;\n \n@@ -334,7 +335,7 @@ nfp_tun_write_neigh(struct net_device *netdev, struct nfp_app *app,\n send_msg:\n \tnfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_NEIGH,\n \t\t\t\t sizeof(struct nfp_tun_neigh),\n-\t\t\t\t (unsigned char *)&payload);\n+\t\t\t\t (unsigned char *)&payload, flag);\n }\n \n static int\n@@ -385,7 +386,7 @@ nfp_tun_neigh_event_handler(struct notifier_block *nb, unsigned long event,\n #endif\n \n \tflow.flowi4_proto = IPPROTO_UDP;\n-\tnfp_tun_write_neigh(n->dev, app, &flow, n);\n+\tnfp_tun_write_neigh(n->dev, app, &flow, n, GFP_ATOMIC);\n \n \treturn NOTIFY_OK;\n }\n@@ -423,7 +424,7 @@ void nfp_tunnel_request_route(struct nfp_app *app, struct sk_buff *skb)\n \tip_rt_put(rt);\n \tif (!n)\n \t\tgoto route_fail_warning;\n-\tnfp_tun_write_neigh(n->dev, app, &flow, n);\n+\tnfp_tun_write_neigh(n->dev, app, &flow, n, GFP_KERNEL);\n \tneigh_release(n);\n \treturn;\n \n@@ -456,7 +457,7 @@ static void nfp_tun_write_ipv4_list(struct nfp_app *app)\n \n \tnfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_IPS,\n \t\t\t\t sizeof(struct nfp_tun_ipv4_addr),\n-\t\t\t\t &payload);\n+\t\t\t\t &payload, GFP_KERNEL);\n }\n \n void nfp_tunnel_add_ipv4_off(struct nfp_app *app, __be32 ipv4)\n@@ -548,7 +549,7 @@ void nfp_tunnel_write_macs(struct nfp_app *app)\n \t}\n \n \terr = nfp_flower_xmit_tun_conf(app, NFP_FLOWER_CMSG_TYPE_TUN_MAC,\n-\t\t\t\t       pay_size, payload);\n+\t\t\t\t       pay_size, payload, GFP_KERNEL);\n \n \tkfree(payload);\n \n@@ -729,7 +730,7 @@ int nfp_tunnel_config_start(struct nfp_app *app)\n \tINIT_LIST_HEAD(&priv->nfp_ipv4_off_list);\n \n \t/* Initialise priv data for neighbour offloading. */\n-\tmutex_init(&priv->nfp_neigh_off_lock);\n+\tspin_lock_init(&priv->nfp_neigh_off_lock);\n \tINIT_LIST_HEAD(&priv->nfp_neigh_off_list);\n \tpriv->nfp_tun_neigh_nb.notifier_call = nfp_tun_neigh_event_handler;\n \n@@ -769,43 +770,35 @@ void nfp_tunnel_config_stop(struct nfp_app *app)\n \tunregister_netevent_notifier(&priv->nfp_tun_neigh_nb);\n \n \t/* Free any memory that may be occupied by MAC list. */\n-\tmutex_lock(&priv->nfp_mac_off_lock);\n \tlist_for_each_safe(ptr, storage, &priv->nfp_mac_off_list) {\n \t\tmac_entry = list_entry(ptr, struct nfp_tun_mac_offload_entry,\n \t\t\t\t       list);\n \t\tlist_del(&mac_entry->list);\n \t\tkfree(mac_entry);\n \t}\n-\tmutex_unlock(&priv->nfp_mac_off_lock);\n \n \t/* Free any memory that may be occupied by MAC index list. */\n-\tmutex_lock(&priv->nfp_mac_index_lock);\n \tlist_for_each_safe(ptr, storage, &priv->nfp_mac_index_list) {\n \t\tmac_idx = list_entry(ptr, struct nfp_tun_mac_non_nfp_idx,\n \t\t\t\t     list);\n \t\tlist_del(&mac_idx->list);\n \t\tkfree(mac_idx);\n \t}\n-\tmutex_unlock(&priv->nfp_mac_index_lock);\n \n \tida_destroy(&priv->nfp_mac_off_ids);\n \n \t/* Free any memory that may be occupied by ipv4 list. */\n-\tmutex_lock(&priv->nfp_ipv4_off_lock);\n \tlist_for_each_safe(ptr, storage, &priv->nfp_ipv4_off_list) {\n \t\tip_entry = list_entry(ptr, struct nfp_ipv4_addr_entry, list);\n \t\tlist_del(&ip_entry->list);\n \t\tkfree(ip_entry);\n \t}\n-\tmutex_unlock(&priv->nfp_ipv4_off_lock);\n \n \t/* Free any memory that may be occupied by the route list. */\n-\tmutex_lock(&priv->nfp_neigh_off_lock);\n \tlist_for_each_safe(ptr, storage, &priv->nfp_neigh_off_list) {\n \t\troute_entry = list_entry(ptr, struct nfp_ipv4_route_entry,\n \t\t\t\t\t list);\n \t\tlist_del(&route_entry->list);\n \t\tkfree(route_entry);\n \t}\n-\tmutex_unlock(&priv->nfp_neigh_off_lock);\n }\n",
    "prefixes": [
        "net-next",
        "2/8"
    ]
}