get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 523537,
    "url": "http://patchwork.ozlabs.org/api/patches/523537/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1443463964-148204-8-git-send-email-catherine.sullivan@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": "<1443463964-148204-8-git-send-email-catherine.sullivan@intel.com>",
    "list_archive_url": null,
    "date": "2015-09-28T18:12:36",
    "name": "[next,S16,07/15] i40e: Enhanced fix to protect 'mac_filter_list' accesses",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "e024a13d713603dc63cd30db6502d3d8a0b72b49",
    "submitter": {
        "id": 13931,
        "url": "http://patchwork.ozlabs.org/api/people/13931/?format=api",
        "name": "Catherine Sullivan",
        "email": "catherine.sullivan@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1443463964-148204-8-git-send-email-catherine.sullivan@intel.com/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/523537/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/523537/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<intel-wired-lan-bounces@lists.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 hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\tby ozlabs.org (Postfix) with ESMTP id 44B761402D4\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 29 Sep 2015 04:14:58 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 87B2A954B8;\n\tMon, 28 Sep 2015 18:14:57 +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 9cIeVf7oGi4R; Mon, 28 Sep 2015 18:14:56 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 9E19F954C0;\n\tMon, 28 Sep 2015 18:14:56 +0000 (UTC)",
            "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id C35431CE9AE\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 28 Sep 2015 18:14:55 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id BC247332AE\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 28 Sep 2015 18:14:55 +0000 (UTC)",
            "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id gQg3eSb5SNJA for <intel-wired-lan@lists.osuosl.org>;\n\tMon, 28 Sep 2015 18:14:54 +0000 (UTC)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby silver.osuosl.org (Postfix) with ESMTP id 02FCC32E47\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tMon, 28 Sep 2015 18:14:53 +0000 (UTC)",
            "from fmsmga003.fm.intel.com ([10.253.24.29])\n\tby orsmga101.jf.intel.com with ESMTP; 28 Sep 2015 11:14:26 -0700",
            "from catheri1-tigger.jf.intel.com ([134.134.176.92])\n\tby FMSMGA003.fm.intel.com with ESMTP; 28 Sep 2015 11:14:26 -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.17,603,1437462000\"; d=\"scan'208\";a=\"569972171\"",
        "From": "Catherine Sullivan <catherine.sullivan@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Date": "Mon, 28 Sep 2015 14:12:36 -0400",
        "Message-Id": "<1443463964-148204-8-git-send-email-catherine.sullivan@intel.com>",
        "X-Mailer": "git-send-email 1.9.3",
        "In-Reply-To": "<1443463964-148204-1-git-send-email-catherine.sullivan@intel.com>",
        "References": "<1443463964-148204-1-git-send-email-catherine.sullivan@intel.com>",
        "Subject": "[Intel-wired-lan] [next PATCH S16 07/15] i40e: Enhanced fix to\n\tprotect 'mac_filter_list' accesses",
        "X-BeenThere": "intel-wired-lan@lists.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.lists.osuosl.org>",
        "List-Unsubscribe": "<http://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.osuosl.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>",
        "List-Post": "<mailto:intel-wired-lan@lists.osuosl.org>",
        "List-Help": "<mailto:intel-wired-lan-request@lists.osuosl.org?subject=help>",
        "List-Subscribe": "<http://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.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@lists.osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@lists.osuosl.org>"
    },
    "content": "From: Kiran Patil <kiran.patil@intel.com>\n\nThis patch protects invocation of i40e_set_mac ---> i40e_del_filter using\n'mac_filter_list_lock' to synchronize 'mac_filter_list' accesses with\nservice_task : i40e_sync_vsi_filters.\n\nIt also replaces spin_lock with spin_lock_bh where needed.\n\nSigned-off-by: Kiran Patil <kiran.patil@intel.com>\nChange-ID: I7db30be69d7f065724ea1ab5cdcd24b54096b443\n---\n drivers/net/ethernet/intel/i40e/i40e_fcoe.c        |  4 +-\n drivers/net/ethernet/intel/i40e/i40e_main.c        | 62 +++++++++++-----------\n drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 22 ++++----\n 3 files changed, 45 insertions(+), 43 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_fcoe.c b/drivers/net/ethernet/intel/i40e/i40e_fcoe.c\nindex 61df19e..fe5d9bf 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_fcoe.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_fcoe.c\n@@ -1516,12 +1516,12 @@ void i40e_fcoe_config_netdev(struct net_device *netdev, struct i40e_vsi *vsi)\n \t * same PCI function.\n \t */\n \tnetdev->dev_port = 1;\n-\tspin_lock(&vsi->mac_filter_list_lock);\n+\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \ti40e_add_filter(vsi, hw->mac.san_addr, 0, false, false);\n \ti40e_add_filter(vsi, (u8[6]) FC_FCOE_FLOGI_MAC, 0, false, false);\n \ti40e_add_filter(vsi, FIP_ALL_FCOE_MACS, 0, false, false);\n \ti40e_add_filter(vsi, FIP_ALL_ENODE_MACS, 0, false, false);\n-\tspin_unlock(&vsi->mac_filter_list_lock);\n+\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \n \t/* use san mac */\n \tether_addr_copy(netdev->dev_addr, hw->mac.san_addr);\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c\nindex 5503763..d656182 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_main.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c\n@@ -1544,8 +1544,10 @@ static int i40e_set_mac(struct net_device *netdev, void *p)\n \t\telement.flags = I40E_AQC_MACVLAN_DEL_PERFECT_MATCH;\n \t\ti40e_aq_remove_macvlan(&pf->hw, vsi->seid, &element, 1, NULL);\n \t} else {\n+\t\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \t\ti40e_del_filter(vsi, netdev->dev_addr, I40E_VLAN_ANY,\n \t\t\t\tfalse, false);\n+\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t}\n \n \tif (ether_addr_equal(addr->sa_data, hw->mac.addr)) {\n@@ -1556,12 +1558,12 @@ static int i40e_set_mac(struct net_device *netdev, void *p)\n \t\telement.flags = cpu_to_le16(I40E_AQC_MACVLAN_ADD_PERFECT_MATCH);\n \t\ti40e_aq_add_macvlan(&pf->hw, vsi->seid, &element, 1, NULL);\n \t} else {\n-\t\tspin_lock(&vsi->mac_filter_list_lock);\n+\t\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \t\tf = i40e_add_filter(vsi, addr->sa_data, I40E_VLAN_ANY,\n \t\t\t\t    false, false);\n \t\tif (f)\n \t\t\tf->is_laa = true;\n-\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t}\n \n \ti40e_sync_vsi_filters(vsi);\n@@ -1734,7 +1736,7 @@ static void i40e_set_rx_mode(struct net_device *netdev)\n \tstruct netdev_hw_addr *mca;\n \tstruct netdev_hw_addr *ha;\n \n-\tspin_lock(&vsi->mac_filter_list_lock);\n+\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \n \t/* add addr if not already in the filter list */\n \tnetdev_for_each_uc_addr(uca, netdev) {\n@@ -1783,7 +1785,7 @@ static void i40e_set_rx_mode(struct net_device *netdev)\n bottom_of_search_loop:\n \t\tcontinue;\n \t}\n-\tspin_unlock(&vsi->mac_filter_list_lock);\n+\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \n \t/* check for other flag changes */\n \tif (vsi->current_netdev_flags != vsi->netdev->flags) {\n@@ -1908,7 +1910,7 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)\n \tif (vsi->flags & I40E_VSI_FLAG_FILTER_CHANGED) {\n \t\tvsi->flags &= ~I40E_VSI_FLAG_FILTER_CHANGED;\n \n-\t\tspin_lock(&vsi->mac_filter_list_lock);\n+\t\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \t\tlist_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {\n \t\t\tif (!f->changed)\n \t\t\t\tcontinue;\n@@ -1943,7 +1945,7 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)\n \t\t\ti40e_undo_del_filter_entries(vsi, &tmp_del_list);\n \t\t\ti40e_undo_add_filter_entries(vsi);\n \t\t}\n-\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \n \t\tif (err_cond)\n \t\t\ti40e_cleanup_add_list(&tmp_add_list);\n@@ -1960,10 +1962,10 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)\n \t\t\ti40e_cleanup_add_list(&tmp_add_list);\n \n \t\t\t/* Undo VSI's MAC filter entry element updates */\n-\t\t\tspin_lock(&vsi->mac_filter_list_lock);\n+\t\t\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \t\t\ti40e_undo_del_filter_entries(vsi, &tmp_del_list);\n \t\t\ti40e_undo_add_filter_entries(vsi);\n-\t\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t\t\treturn -ENOMEM;\n \t\t}\n \n@@ -2032,9 +2034,9 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)\n \t\t\ti40e_cleanup_add_list(&tmp_add_list);\n \n \t\t\t/* Undo add filter entries from VSI MAC filter list */\n-\t\t\tspin_lock(&vsi->mac_filter_list_lock);\n+\t\t\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \t\t\ti40e_undo_add_filter_entries(vsi);\n-\t\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t\t\treturn -ENOMEM;\n \t\t}\n \n@@ -2321,7 +2323,7 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)\n \tis_netdev = !!(vsi->netdev);\n \n \t/* Locked once because all functions invoked below iterates list*/\n-\tspin_lock(&vsi->mac_filter_list_lock);\n+\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \n \tif (is_netdev) {\n \t\tadd_f = i40e_add_filter(vsi, vsi->netdev->dev_addr, vid,\n@@ -2330,7 +2332,7 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)\n \t\t\tdev_info(&vsi->back->pdev->dev,\n \t\t\t\t \"Could not add vlan filter %d for %pM\\n\",\n \t\t\t\t vid, vsi->netdev->dev_addr);\n-\t\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t\t\treturn -ENOMEM;\n \t\t}\n \t}\n@@ -2341,7 +2343,7 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)\n \t\t\tdev_info(&vsi->back->pdev->dev,\n \t\t\t\t \"Could not add vlan filter %d for %pM\\n\",\n \t\t\t\t vid, f->macaddr);\n-\t\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t\t\treturn -ENOMEM;\n \t\t}\n \t}\n@@ -2363,7 +2365,7 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)\n \t\t\t\tdev_info(&vsi->back->pdev->dev,\n \t\t\t\t\t \"Could not add filter 0 for %pM\\n\",\n \t\t\t\t\t vsi->netdev->dev_addr);\n-\t\t\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\t\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t\t\t\treturn -ENOMEM;\n \t\t\t}\n \t\t}\n@@ -2383,7 +2385,7 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)\n \t\t\t\tdev_info(&vsi->back->pdev->dev,\n \t\t\t\t\t \"Could not add filter 0 for %pM\\n\",\n \t\t\t\t\tf->macaddr);\n-\t\t\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\t\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t\t\t\treturn -ENOMEM;\n \t\t\t}\n \t\t}\n@@ -2392,7 +2394,7 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)\n \t/* Make sure to release before sync_vsi_filter because that\n \t * function will lock/unlock as necessary\n \t */\n-\tspin_unlock(&vsi->mac_filter_list_lock);\n+\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \n \tif (test_bit(__I40E_DOWN, &vsi->back->state) ||\n \t    test_bit(__I40E_RESET_RECOVERY_PENDING, &vsi->back->state))\n@@ -2419,7 +2421,7 @@ int i40e_vsi_kill_vlan(struct i40e_vsi *vsi, s16 vid)\n \tis_netdev = !!(netdev);\n \n \t/* Locked once because all functions invoked below iterates list */\n-\tspin_lock(&vsi->mac_filter_list_lock);\n+\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \n \tif (is_netdev)\n \t\ti40e_del_filter(vsi, netdev->dev_addr, vid, is_vf, is_netdev);\n@@ -2451,7 +2453,7 @@ int i40e_vsi_kill_vlan(struct i40e_vsi *vsi, s16 vid)\n \t\t\tdev_info(&vsi->back->pdev->dev,\n \t\t\t\t \"Could not add filter %d for %pM\\n\",\n \t\t\t\t I40E_VLAN_ANY, netdev->dev_addr);\n-\t\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t\t\treturn -ENOMEM;\n \t\t}\n \t}\n@@ -2465,7 +2467,7 @@ int i40e_vsi_kill_vlan(struct i40e_vsi *vsi, s16 vid)\n \t\t\t\tdev_info(&vsi->back->pdev->dev,\n \t\t\t\t\t \"Could not add filter %d for %pM\\n\",\n \t\t\t\t\t I40E_VLAN_ANY, f->macaddr);\n-\t\t\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\t\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t\t\t\treturn -ENOMEM;\n \t\t\t}\n \t\t}\n@@ -2474,7 +2476,7 @@ int i40e_vsi_kill_vlan(struct i40e_vsi *vsi, s16 vid)\n \t/* Make sure to release before sync_vsi_filter because that\n \t * function with lock/unlock as necessary\n \t */\n-\tspin_unlock(&vsi->mac_filter_list_lock);\n+\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \n \tif (test_bit(__I40E_DOWN, &vsi->back->state) ||\n \t    test_bit(__I40E_RESET_RECOVERY_PENDING, &vsi->back->state))\n@@ -8660,10 +8662,10 @@ static int i40e_config_netdev(struct i40e_vsi *vsi)\n \t\t * which must be replaced by a normal filter.\n \t\t */\n \t\tif (!i40e_rm_default_mac_filter(vsi, mac_addr)) {\n-\t\t\tspin_lock(&vsi->mac_filter_list_lock);\n+\t\t\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \t\t\ti40e_add_filter(vsi, mac_addr,\n \t\t\t\t\tI40E_VLAN_ANY, false, true);\n-\t\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t\t}\n \t} else {\n \t\t/* relate the VSI_VMDQ name to the VSI_MAIN name */\n@@ -8671,14 +8673,14 @@ static int i40e_config_netdev(struct i40e_vsi *vsi)\n \t\t\t pf->vsi[pf->lan_vsi]->netdev->name);\n \t\trandom_ether_addr(mac_addr);\n \n-\t\tspin_lock(&vsi->mac_filter_list_lock);\n+\t\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \t\ti40e_add_filter(vsi, mac_addr, I40E_VLAN_ANY, false, false);\n-\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t}\n \n-\tspin_lock(&vsi->mac_filter_list_lock);\n+\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \ti40e_add_filter(vsi, brdcast, I40E_VLAN_ANY, false, false);\n-\tspin_unlock(&vsi->mac_filter_list_lock);\n+\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \n \tether_addr_copy(netdev->dev_addr, mac_addr);\n \tether_addr_copy(netdev->perm_addr, mac_addr);\n@@ -8930,7 +8932,7 @@ static int i40e_add_vsi(struct i40e_vsi *vsi)\n \t\tvsi->id = ctxt.vsi_number;\n \t}\n \n-\tspin_lock(&vsi->mac_filter_list_lock);\n+\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \t/* If macvlan filters already exist, force them to get loaded */\n \tlist_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {\n \t\tf->changed = true;\n@@ -8942,7 +8944,7 @@ static int i40e_add_vsi(struct i40e_vsi *vsi)\n \t\t\tfound_laa_mac_filter = true;\n \t\t}\n \t}\n-\tspin_unlock(&vsi->mac_filter_list_lock);\n+\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \n \tif (found_laa_mac_filter) {\n \t\tstruct i40e_aqc_remove_macvlan_element_data element;\n@@ -9027,11 +9029,11 @@ int i40e_vsi_release(struct i40e_vsi *vsi)\n \t\ti40e_vsi_disable_irq(vsi);\n \t}\n \n-\tspin_lock(&vsi->mac_filter_list_lock);\n+\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \tlist_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list)\n \t\ti40e_del_filter(vsi, f->macaddr, f->vlan,\n \t\t\t\tf->is_vf, f->is_netdev);\n-\tspin_unlock(&vsi->mac_filter_list_lock);\n+\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \n \ti40e_sync_vsi_filters(vsi);\n \ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\nindex 465b1e9..3ed8b98 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\n@@ -548,7 +548,7 @@ static int i40e_alloc_vsi_res(struct i40e_vf *vf, enum i40e_vsi_type type)\n \t\tif (vf->port_vlan_id)\n \t\t\ti40e_vsi_add_pvid(vsi, vf->port_vlan_id);\n \n-\t\tspin_lock(&vsi->mac_filter_list_lock);\n+\t\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \t\tf = i40e_add_filter(vsi, vf->default_lan_addr.addr,\n \t\t\t\t    vf->port_vlan_id ? vf->port_vlan_id : -1,\n \t\t\t\t    true, false);\n@@ -561,7 +561,7 @@ static int i40e_alloc_vsi_res(struct i40e_vf *vf, enum i40e_vsi_type type)\n \t\tif (!f)\n \t\t\tdev_info(&pf->pdev->dev,\n \t\t\t\t \"Could not allocate VF broadcast filter\\n\");\n-\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t}\n \n \t/* program mac filter */\n@@ -1602,7 +1602,7 @@ static int i40e_vc_add_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)\n \t/* Lock once, because all function inside for loop accesses VSI's\n \t * MAC filter list which needs to be protected using same lock.\n \t */\n-\tspin_lock(&vsi->mac_filter_list_lock);\n+\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \n \t/* add new addresses to the list */\n \tfor (i = 0; i < al->num_elements; i++) {\n@@ -1622,11 +1622,11 @@ static int i40e_vc_add_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)\n \t\t\tdev_err(&pf->pdev->dev,\n \t\t\t\t\"Unable to add VF MAC filter\\n\");\n \t\t\tret = I40E_ERR_PARAM;\n-\t\t\tspin_unlock(&vsi->mac_filter_list_lock);\n+\t\t\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \t\t\tgoto error_param;\n \t\t}\n \t}\n-\tspin_unlock(&vsi->mac_filter_list_lock);\n+\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \n \t/* program the updated filter list */\n \tif (i40e_sync_vsi_filters(vsi))\n@@ -1674,12 +1674,12 @@ static int i40e_vc_del_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)\n \t}\n \tvsi = pf->vsi[vf->lan_vsi_idx];\n \n-\tspin_lock(&vsi->mac_filter_list_lock);\n+\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \t/* delete addresses from the list */\n \tfor (i = 0; i < al->num_elements; i++)\n \t\ti40e_del_filter(vsi, al->list[i].addr,\n \t\t\t\tI40E_VLAN_ANY, true, false);\n-\tspin_unlock(&vsi->mac_filter_list_lock);\n+\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \n \t/* program the updated filter list */\n \tif (i40e_sync_vsi_filters(vsi))\n@@ -2079,7 +2079,7 @@ int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac)\n \t/* Lock once because below invoked function add/del_filter requires\n \t * mac_filter_list_lock to be held\n \t */\n-\tspin_lock(&vsi->mac_filter_list_lock);\n+\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \n \t/* delete the temporary mac address */\n \ti40e_del_filter(vsi, vf->default_lan_addr.addr,\n@@ -2092,7 +2092,7 @@ int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac)\n \tlist_for_each_entry(f, &vsi->mac_filter_list, list)\n \t\ti40e_del_filter(vsi, f->macaddr, f->vlan, true, false);\n \n-\tspin_unlock(&vsi->mac_filter_list_lock);\n+\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \n \tdev_info(&pf->pdev->dev, \"Setting MAC %pM on VF %d\\n\", mac, vf_id);\n \t/* program mac filter */\n@@ -2156,9 +2156,9 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,\n \t\t/* duplicate request, so just return success */\n \t\tgoto error_pvid;\n \n-\tspin_lock(&vsi->mac_filter_list_lock);\n+\tspin_lock_bh(&vsi->mac_filter_list_lock);\n \tis_vsi_in_vlan = i40e_is_vsi_in_vlan(vsi);\n-\tspin_unlock(&vsi->mac_filter_list_lock);\n+\tspin_unlock_bh(&vsi->mac_filter_list_lock);\n \n \tif (le16_to_cpu(vsi->info.pvid) == 0 && is_vsi_in_vlan) {\n \t\tdev_err(&pf->pdev->dev,\n",
    "prefixes": [
        "next",
        "S16",
        "07/15"
    ]
}