mirror_ubuntu-kernels/drivers/net/ethernet
Ido Schimmel cbaf3f6af9 mlxsw: spectrum_mr: Update egress RIF list before route's action
Each multicast route that is forwarding packets (as opposed to trapping
them) points to a list of egress router interfaces (RIFs) through which
packets are replicated.

A route's action can transition from trap to forward when a RIF is
created for one of the route's egress virtual interfaces (eVIF). When
this happens, the route's action is first updated and only later the
list of egress RIFs is committed to the device.

This results in the route pointing to an invalid list. In case the list
pointer is out of range (due to uninitialized memory), the device will
complain:

mlxsw_spectrum2 0000:06:00.0: EMAD reg access failed (tid=5733bf490000905c,reg_id=300f(pefa),type=write,status=7(bad parameter))

Fix this by first committing the list of egress RIFs to the device and
only later update the route's action.

Note that a fix is not needed in the reverse function (i.e.,
mlxsw_sp_mr_route_evif_unresolve()), as there the route's action is
first updated and only later the RIF is removed from the list.

Cc: stable@vger.kernel.org
Fixes: c011ec1bbf ("mlxsw: spectrum: Add the multicast routing offloading logic")
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Link: https://lore.kernel.org/r/20210506072308.3834303-1-idosch@idosch.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2021-05-06 17:19:29 -07:00
..
3com
8390
actions net: ethernet: actions: Add Actions Semi Owl Ethernet MAC driver 2021-03-22 12:56:21 -07:00
adaptec
aeroflex of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
agere
alacritech
allwinner of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
alteon
altera of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
amazon net: ena: remove extra words from comments 2021-03-31 14:34:08 -07:00
amd pcnet32: Remove redundant variable prev_link and curr_link 2021-04-26 12:46:10 -07:00
apm
apple
aquantia
arc of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
atheros net: atheros: nic-devel@qualcomm.com is dead 2021-04-30 15:03:21 -07:00
broadcom bnx2x: Remove redundant assignment to err 2021-04-29 15:52:07 -07:00
brocade Fix spelling error from "eleminate" to "eliminate" 2021-05-05 12:43:42 -07:00
cadence net: macb: Remove redundant assignment to queue 2021-04-29 15:50:20 -07:00
calxeda
cavium Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-17 11:08:07 -07:00
chelsio net:CXGB4: fix leak if sk_buff is not used 2021-05-05 12:46:00 -07:00
cirrus
cisco ethernet:enic: Fix a use after free bug in enic_hard_start_xmit 2021-05-03 13:23:00 -07:00
cortina
davicom net: davicom: Remove redundant assignment to ret 2021-04-26 12:48:30 -07:00
dec tulip: de2104x: use module_pci_driver to simplify the code 2021-04-07 15:15:01 -07:00
dlink Networking changes for 5.13. 2021-04-29 11:57:23 -07:00
emulex
ezchip of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
faraday Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-03-25 15:31:22 -07:00
freescale net: selftest: fix build issue if INET is disabled 2021-04-28 14:06:45 -07:00
fujitsu
google net: gve: remove duplicated allowed 2021-03-25 17:07:58 -07:00
hisilicon net: hns3: disable phy loopback setting in hclge_mac_start_phy 2021-04-30 14:49:33 -07:00
huawei hinic: avoid gcc -Wrestrict warning 2021-03-24 18:00:32 -07:00
i825xx
ibm Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-17 11:08:07 -07:00
intel iavf: redefine the magic number for FDIR GTP-U header fields 2021-04-23 09:34:19 -07:00
marvell Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-26 12:00:00 -07:00
mediatek net: ethernet: mtk_eth_soc: use iopoll.h macro for DMA init 2021-04-23 13:31:58 -07:00
mellanox mlxsw: spectrum_mr: Update egress RIF list before route's action 2021-05-06 17:19:29 -07:00
micrel of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
microchip of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
microsoft net: mana: Use int to check the return value of mana_gd_poll_cq() 2021-04-23 13:16:29 -07:00
moxa net: moxa: remove redundant dev_err call in moxart_mac_probe() 2021-03-28 18:06:50 -07:00
mscc net: mscc: ocelot: support PTP Sync one-step timestamping 2021-04-27 14:10:15 -07:00
myricom ethernet: myri10ge: Fix a use after free in myri10ge_sw_tso 2021-03-29 13:41:17 -07:00
natsemi
neterion vxge: avoid -Wemtpy-body warnings 2021-04-22 13:27:36 -07:00
netronome Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-26 12:00:00 -07:00
ni
nvidia
nxp of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
oki-semi ptp_pch: Move 'pch_*()' prototypes to shared header 2021-03-12 17:09:34 -08:00
packetengines
pasemi
pensando ionic: return -EFAULT if copy_to_user() fails 2021-04-13 15:08:18 -07:00
qlogic qede: Use 'skb_add_rx_frag()' instead of hand coding it 2021-04-05 11:59:33 -07:00
qualcomm net:emac/emac-mac: Fix a use after free in emac_mac_tx_buf_send 2021-04-26 13:07:30 -07:00
rdc
realtek r8169: keep pause settings on interface down/up cycle 2021-04-17 14:02:48 -07:00
renesas Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-26 12:00:00 -07:00
rocker net: bridge: switchdev: include local flag in FDB notifications 2021-04-16 15:15:45 -07:00
samsung of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
seeq
sfc sfc: adjust efx->xdp_tx_queue_count with the real number of initialized queues 2021-04-27 15:38:29 -07:00
sgi
silan
sis
smsc net: smsc911x: skip acpi_device_id table when !CONFIG_ACPI 2021-04-05 15:05:02 -07:00
socionext of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
stmicro net: stmmac: Clear receive all(RA) bit when promiscuous mode is off 2021-05-04 12:01:37 -07:00
sun Fix a typo 2021-03-18 19:46:19 -07:00
synopsys
tehuti
ti Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-26 12:00:00 -07:00
toshiba net: toshiba: fix the trailing format of some block comments 2021-03-31 14:34:09 -07:00
tundra
via net: ethernet: Fix typo of 'network' in comment 2021-03-30 18:14:11 -07:00
wiznet of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
xilinx net: xilinx: drivers need/depend on HAS_IOMEM 2021-04-19 15:36:00 -07:00
xircom xircom: remove redundant error check on variable err 2021-04-07 14:48:32 -07:00
xscale Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-26 12:00:00 -07:00
dnet.c
dnet.h
ec_bhf.c
ethoc.c of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
fealnx.c net: fealnx: use module_pci_driver to simplify the code 2021-04-07 15:15:02 -07:00
jme.c net: jme: Replace link-change tasklet with work 2021-03-17 16:33:58 +01:00
jme.h net: jme: Replace link-change tasklet with work 2021-03-17 16:33:58 +01:00
Kconfig net: korina: Make driver COMPILE_TESTable 2021-04-19 15:58:14 -07:00
korina.c korina: Fix build. 2021-04-20 16:40:08 -07:00
lantiq_etop.c
lantiq_xrx200.c of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
Makefile net: mana: Add a driver for Microsoft Azure Network Adapter (MANA) 2021-04-19 15:24:25 -07:00