[PATCH 4.9 126/172] be2net: dont delete MAC on close on unprivileged BE3 VFs

From: Greg Kroah-Hartman
Date: Mon Jul 03 2017 - 09:45:35 EST


4.9-stable review patch. If anyone has any objections, please let me know.

------------------

From: Ivan Vecera <cera@xxxxxxx>


[ Upstream commit 6d928ae590c8d58cfd5cca997d54394de139cbb7 ]

BE3 VFs without FILTMGMT privilege are not allowed to modify its MAC,
VLAN table and UC/MC lists. So don't try to delete MAC on such VFs.

Cc: Sathya Perla <sathya.perla@xxxxxxxxxxxx>
Cc: Ajit Khaparde <ajit.khaparde@xxxxxxxxxxxx>
Cc: Sriharsha Basavapatna <sriharsha.basavapatna@xxxxxxxxxxxx>
Cc: Somnath Kotur <somnath.kotur@xxxxxxxxxxxx>
Signed-off-by: Ivan Vecera <cera@xxxxxxx>
Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
drivers/net/ethernet/emulex/benet/be_main.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -3630,7 +3630,11 @@ static void be_rx_qs_destroy(struct be_a

static void be_disable_if_filters(struct be_adapter *adapter)
{
- be_dev_mac_del(adapter, adapter->pmac_id[0]);
+ /* Don't delete MAC on BE3 VFs without FILTMGMT privilege */
+ if (!BEx_chip(adapter) || !be_virtfn(adapter) ||
+ check_privilege(adapter, BE_PRIV_FILTMGMT))
+ be_dev_mac_del(adapter, adapter->pmac_id[0]);
+
be_clear_uc_list(adapter);
be_clear_mc_list(adapter);