linux/drivers/net
Tobias Waldekranz 5b0ae1723a net: mvpp2: Prevent parser TCAM memory corruption
[ Upstream commit 9684407522 ]

Protect the parser TCAM/SRAM memory, and the cached (shadow) SRAM
information, from concurrent modifications.

Both the TCAM and SRAM tables are indirectly accessed by configuring
an index register that selects the row to read or write to. This means
that operations must be atomic in order to, e.g., avoid spreading
writes across multiple rows. Since the shadow SRAM array is used to
find free rows in the hardware table, it must also be protected in
order to avoid TOCTOU errors where multiple cores allocate the same
row.

This issue was detected in a situation where `mvpp2_set_rx_mode()` ran
concurrently on two CPUs. In this particular case the
MVPP2_PE_MAC_UC_PROMISCUOUS entry was corrupted, causing the
classifier unit to drop all incoming unicast - indicated by the
`rx_classifier_drops` counter.

Fixes: 3f518509de ("ethernet: Add new driver for Marvell Armada 375 network unit")
Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Tested-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Link: https://patch.msgid.link/20250401065855.3113635-1-tobias@waldekranz.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-04-10 14:37:40 +02:00
..
appletalk net: appletalk: remove Apple/Farallon LocalTalk PC support 2022-05-11 13:08:38 +01:00
arcnet arcnet: restoring support for multiple Sohard Arcnet cards 2023-12-13 18:45:05 +01:00
bonding bonding: fix incorrect MAC address setting to receive NS messages 2025-03-22 12:50:39 -07:00
caif caif_virtio: fix wrong pointer check in cfv_probe() 2025-03-13 12:58:29 +01:00
can can: flexcan: disable transceiver during system PM 2025-03-28 21:59:54 +01:00
dsa net: dsa: mv88e6xxx: Verify after ATU Load ops 2025-03-22 12:50:38 -07:00
ethernet net: mvpp2: Prevent parser TCAM memory corruption 2025-04-10 14:37:40 +02:00
fddi net: fddi: skfp: rmt: Clean up some inconsistent indenting 2023-04-11 12:46:26 +02:00
fjes fjes: fix memleaks in fjes_hw_setup 2024-01-31 16:19:05 -08:00
hamradio tty: use u8 for flags 2023-08-11 21:12:45 +02:00
hippi net: hippi: Add missing pci_disable_device() in rr_init_one() 2022-09-26 13:22:39 -07:00
hyperv hv_netvsc: Fix VF namespace also in synthetic NIC NETDEV_REGISTER event 2024-11-01 01:58:33 +01:00
ieee802154 ieee802154: ca8210: Add missing check for kfifo_alloc() in ca8210_probe() 2025-01-17 13:36:11 +01:00
ipa net: ipa: Enable checksum for IPA_ENDPOINT_AP_MODEM_{RX,TX} for v4.7 2025-03-13 12:58:31 +01:00
ipvlan ipvlan: ensure network headers are in skb linear part 2025-03-07 16:45:40 +01:00
mctp net: mctp i2c: Copy headers if cloned 2025-03-22 12:50:38 -07:00
mdio net: mdiobus: fix an OF node reference leak 2024-12-27 13:58:49 +01:00
netdevsim netdevsim: print human readable IP address 2025-02-21 13:57:25 +01:00
pcs net: pcs: xpcs: fix the wrong register that was written back 2024-10-10 11:57:58 +02:00
phy net: phy: c45-tjaxx: add delay between MDIO write and read in soft_reset 2025-02-17 09:40:39 +01:00
plip net: plip: fix break; causing plip to never transmit 2024-11-01 01:58:29 +01:00
ppp ppp: Fix KMSAN uninit-value warning with bpf 2025-03-13 12:58:31 +01:00
pse-pd net: pse-pd: PSE_REGULATOR should depend on REGULATOR 2022-10-05 20:32:28 -07:00
slip slip: make slhc_remember() more robust against malicious packets 2024-10-17 15:24:30 +02:00
team team: better TEAM_OPTION_TYPE_STRING validation 2025-02-21 13:57:07 +01:00
thunderbolt net: thunderbolt: Fix TCPv6 GSO checksum calculation 2023-09-15 13:45:05 +01:00
usb rndis_host: Flag RNDIS modems as WWAN devices 2025-04-10 14:37:35 +02:00
vmxnet3 vmxnet3: Fix tx queue race condition with XDP 2025-02-17 09:40:12 +01:00
vxlan vxlan: check vxlan_vnigroup_init() return value 2025-02-21 13:57:07 +01:00
wan drivers/net: process the result of hdlc_open() and add call of hdlc_close() in uhdlc_close() 2023-09-22 08:19:18 +01:00
wireguard wireguard: send: annotate intentional data race in checking empty queue 2024-07-18 13:21:23 +02:00
wireless wifi: brcmfmac: keep power during suspend if board requires it 2025-04-10 14:37:37 +02:00
wwan net: wwan: mhi_wwan_mbim: Silence sequence number glitch errors 2025-03-22 12:50:43 -07:00
xen-netback net/xen-netback: prevent UAF in xenvif_flush_hash() 2024-10-10 11:57:22 +02:00
amt.c amt: do not use overwrapped cb area 2024-01-25 15:35:56 -08:00
bareudp.c bareudp: Pull inner IP header on xmit. 2024-10-04 16:28:58 +02:00
dummy.c net: add netdev_lockdep_set_classes() to virtual drivers 2024-04-13 13:07:30 +02:00
eql.c net: rename reference+tracking helpers 2022-06-09 21:52:55 -07:00
geneve.c geneve: Suppress list corruption splat in geneve_destroy_tunnels(). 2025-02-27 04:10:49 -08:00
gtp.c gtp: Suppress list corruption splat in gtp_net_exit_batch_rtnl(). 2025-02-27 04:10:49 -08:00
ifb.c net: Remove the obsolte u64_stats_fetch_*_irq() users (drivers). 2022-10-28 20:13:54 -07:00
Kconfig netconsole: Enable compile time configuration 2023-08-17 19:25:42 -07:00
LICENSE.SRC Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
loopback.c net: loopback: Avoid sending IP packets without an Ethernet header 2025-03-07 16:45:38 +01:00
macsec.c macsec: Fix use-after-free while sending the offloading packet 2024-11-08 16:28:18 +01:00
macvlan.c macvlan: Don't propagate promisc change to lower dev in passthru 2023-11-28 17:19:54 +00:00
macvtap.c drivers: remove struct module * setting from struct class 2023-03-17 15:16:27 +01:00
Makefile net: Always descend into dsa/ folder with CONFIG_NET_DSA enabled 2024-06-12 11:12:46 +02:00
mdio.c net: mdio: Correct function name mdio45_links_ok() in comment 2021-03-29 13:42:44 -07:00
mhi_net.c net: mhi: Remove redundant initialization owner in mhi_net_driver 2023-08-10 17:29:42 -07:00
mii.c net: mii: make mii_ethtool_gset() return void 2021-08-19 13:06:53 +01:00
net_failover.c net/net_failover: fix txq exceeding warning 2023-03-27 08:08:57 +01:00
netconsole.c net: netconsole: Disable target before netpoll cleanup 2024-08-03 08:54:13 +02:00
nlmon.c net: don't include ethtool.h from netdevice.h 2020-11-23 17:27:04 -08:00
ntb_netdev.c net: ntb_netdev: Move ntb_netdev_rx_handler() to call netif_rx() from __netif_rx() 2024-07-11 12:49:13 +02:00
rionet.c driver core: class: remove struct class_interface * from callbacks 2023-04-03 21:42:52 +02:00
sb1000.c net: dev: Makes sure netif_rx() can be invoked in any context. 2022-02-14 13:38:35 +00:00
Space.c net: move from strlcpy with unused retval to strscpy 2022-08-31 14:11:07 -07:00
sungem_phy.c net: sungem_phy: Add of_node_put() for reference returned by of_get_parent() 2022-07-21 19:04:19 -07:00
tap.c tap: add missing verification for short frame 2024-07-27 11:34:11 +02:00
tun.c tun: revert fix group permission check 2025-02-17 09:40:14 +01:00
veth.c net: add netdev_lockdep_set_classes() to virtual drivers 2024-04-13 13:07:30 +02:00
virtio_net.c virtio-net: fix overflow inside virtnet_rq_alloc 2024-12-14 20:00:07 +01:00
vrf.c ipv6: introduce dst_rt6_info() helper 2024-12-14 19:59:35 +01:00
vsockmon.c net: don't include ethtool.h from netdevice.h 2020-11-23 17:27:04 -08:00
xen-netfront.c xen/netfront: fix crash when removing device 2024-12-19 18:11:35 +01:00