linux-stable/drivers/net
Olivier Matz 9cd5029759 ixgbe: fix unexpected VLAN Rx in promisc mode on VF
commit 7bb0fb7c63 upstream.

When the promiscuous mode is enabled on a VF, the IXGBE_VMOLR_VPE
bit (VLAN Promiscuous Enable) is set. This means that the VF will
receive packets whose VLAN is not the same than the VLAN of the VF.

For instance, in this situation:

┌────────┐    ┌────────┐    ┌────────┐
│        │    │        │    │        │
│        │    │        │    │        │
│     VF0├────┤VF1  VF2├────┤VF3     │
│        │    │        │    │        │
└────────┘    └────────┘    └────────┘
   VM1           VM2           VM3

vf 0:  vlan 1000
vf 1:  vlan 1000
vf 2:  vlan 1001
vf 3:  vlan 1001

If we tcpdump on VF3, we see all the packets, even those transmitted
on vlan 1000.

This behavior prevents to bridge VF1 and VF2 in VM2, because it will
create a loop: packets transmitted on VF1 will be received by VF2 and
vice-versa, and bridged again through the software bridge.

This patch remove the activation of VLAN Promiscuous when a VF enables
the promiscuous mode. However, the IXGBE_VMOLR_UPE bit (Unicast
Promiscuous) is kept, so that a VF receives all packets that has the
same VLAN, whatever the destination MAC address.

Fixes: 8443c1a4b1 ("ixgbe, ixgbevf: Add new mbox API xcast mode")
Cc: stable@vger.kernel.org
Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-06-14 18:41:48 +02:00
..
appletalk
arcnet net: arcnet: com20020: Fix null-ptr-deref in com20020pci_probe() 2022-03-03 10:29:13 +00:00
bonding bonding: fix missed rcu protection 2022-06-09 10:25:56 +02:00
caif
can can: xilinx_can: mark bit timing constants as const 2022-06-09 10:26:01 +02:00
dsa net: dsa: mv88e6xxx: use BMSR_ANEGCOMPLETE bit for filling an_complete 2022-06-14 18:41:32 +02:00
ethernet ixgbe: fix unexpected VLAN Rx in promisc mode on VF 2022-06-14 18:41:48 +02:00
fddi
fjes
hamradio
hippi drivers: net: hippi: Fix deadlock in rr_close() 2022-05-09 09:16:28 +02:00
hyperv hv_netvsc: Fix potential dereference of NULL pointer 2022-06-09 10:25:57 +02:00
ieee802154
ipa net: ipa: fix page free in ipa_endpoint_replenish_one() 2022-06-09 10:26:30 +02:00
ipvlan
mctp
mdio net: mdio: Fix ENOMEM return value in BCM6368 mux bus controller 2022-05-12 12:32:35 +02:00
netdevsim
pcs
phy net: phy: dp83867: retrigger SGMII AN when link change 2022-06-14 18:41:46 +02:00
plip
ppp net: fix dev_fill_forward_path with pppoe + bridge 2022-05-25 09:59:07 +02:00
slip drivers: net: slip: fix NPD bug in sl_tx_timeout() 2022-04-20 09:36:23 +02:00
team
usb usbnet: Run unregister_netdev() before unbind() again 2022-06-09 10:25:27 +02:00
vmxnet3 net: vmxnet3: fix possible NULL pointer dereference in vmxnet3_rq_cleanup() 2022-05-25 09:59:08 +02:00
wan
wireguard wireguard: device: check for metadata_dst with skb_valid_dst() 2022-05-09 09:16:22 +02:00
wireless carl9170: tx: fix an incorrect use of list iterator 2022-06-09 10:26:28 +02:00
wwan net: wwan: qcom_bam_dmux: fix wrong pointer passed to IS_ERR() 2022-04-08 13:58:22 +02:00
xen-netback
Kconfig
LICENSE.SRC
Makefile
Space.c
amt.c amt: fix wrong type string definition 2022-06-14 18:41:30 +02:00
bareudp.c bareudp: use ipv6_mod_enabled to check if IPv6 enabled 2022-04-08 13:58:20 +02:00
dummy.c
eql.c
geneve.c
gtp.c
ifb.c
loopback.c
macsec.c macsec: fix UAF bug for real_dev 2022-06-14 18:41:25 +02:00
macvlan.c macvlan: Fix leaking skb in source mode with nodst option 2022-04-20 09:36:17 +02:00
macvtap.c macvtap: advertise link netns via netlink 2022-04-13 19:27:19 +02:00
mdio.c
mhi_net.c
mii.c
net_failover.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
sungem_phy.c
tap.c tuntap: add sanity checks about msg_controllen in sendmsg 2022-04-13 19:27:19 +02:00
thunderbolt.c
tun.c tun: annotate access to queue->trans_start 2022-04-20 09:36:18 +02:00
veth.c veth: Ensure eth header is in skb's linear part 2022-04-20 09:36:12 +02:00
virtio_net.c virtio_net: fix wrong buf address calculation when using xdp 2022-05-09 09:16:16 +02:00
vrf.c vrf: fix packet sniffing for traffic originating from ip tunnels 2022-04-13 19:27:28 +02:00
vsockmon.c
vxlan.c vxlan: fix error return code in vxlan_fdb_append 2022-04-27 14:41:08 +02:00
xen-netfront.c xen/netfront: react properly to failing gnttab_end_foreign_access_ref() 2022-03-07 09:48:55 +01:00