mirror_ubuntu-kernels/drivers/net
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
..
appletalk
arcnet
bonding Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-26 12:00:00 -07:00
caif
can can: m_can: m_can_tx_work_queue(): fix tx_skb race condition 2021-05-06 09:24:07 +02:00
dsa net: dsa: ksz: ksz8863_smi_probe: set proper return value for ksz_switch_alloc() 2021-04-29 15:54:35 -07:00
ethernet mlxsw: spectrum_mr: Update egress RIF list before route's action 2021-05-06 17:19:29 -07:00
fddi fddi/skfp: fix typo 2021-04-27 14:07:27 -07:00
fjes
hamradio Merge 5.12-rc6 into tty-next 2021-04-05 08:59:21 +02:00
hippi
hyperv hv_netvsc: Make netvsc/VF binding check both MAC and serial number 2021-04-25 18:19:23 -07:00
ieee802154 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-09 20:48:35 -07:00
ipa net: ipa: fix inter-EE IRQ register definitions 2021-05-06 16:32:10 -07:00
ipvlan
mdio net: phy: Add support for microchip SMI0 MDIO bus 2021-04-27 14:13:24 -07:00
mhi
netdevsim netdevsim: Only use sampling truncation length when valid 2021-04-22 13:23:56 -07:00
pcs
phy net: phy: marvell: enable downshift by default 2021-04-30 15:20:47 -07:00
plip
ppp Networking changes for 5.13. 2021-04-29 11:57:23 -07:00
slip
team
usb net: hso: fix NULL-deref on disconnect regression 2021-04-26 12:54:44 -07:00
vmxnet3
wan Revert "drivers/net/wan/hdlc_fr: Fix a double free in pvc_xmit" 2021-05-03 13:37:58 -07:00
wireguard
wireless Networking changes for 5.13. 2021-04-29 11:57:23 -07:00
wwan net: wwan: core: Return poll error in case of port removal 2021-04-22 13:26:02 -07:00
xen-netback xen-netback: Check for hotplug-status existence before watching 2021-04-13 15:24:14 -07:00
bareudp.c
dummy.c
eql.c
geneve.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-26 12:00:00 -07:00
gtp.c
ifb.c
Kconfig net: Add a WWAN subsystem 2021-04-16 15:31:02 -07:00
LICENSE.SRC
loopback.c
macsec.c
macvlan.c macvlan: Use 'hash' iterators to simplify code 2021-04-27 14:03:11 -07:00
macvtap.c
Makefile net: Add a WWAN subsystem 2021-04-16 15:31:02 -07:00
mdio.c
mii.c
net_failover.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c net: Space: remove hp100 probe 2021-04-13 15:13:13 -07:00
sungem_phy.c
tap.c
thunderbolt.c
tun.c net: tun: Remove redundant assignment to ret 2021-04-28 13:58:58 -07:00
veth.c veth: check for NAPI instead of xdp_prog before xmit of XDP frame 2021-04-16 15:42:07 -07:00
virtio_net.c virtio-net: fix use-after-free in skb_gro_receive 2021-04-23 13:11:04 -07:00
vrf.c vrf: fix a comment about loopback device 2021-04-14 13:13:53 -07:00
vsockmon.c
vxlan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-04-09 20:48:35 -07:00
xen-netfront.c