linux/drivers/net
Magnus Karlsson 71a773ab79 dpaa_eth: execute xdp_do_flush() before napi_complete_done()
[ Upstream commit b534013798 ]

Make sure that xdp_do_flush() is always executed before
napi_complete_done(). This is important for two reasons. First, a
redirect to an XSKMAP assumes that a call to xdp_do_redirect() from
napi context X on CPU Y will be followed by a xdp_do_flush() from the
same napi context and CPU. This is not guaranteed if the
napi_complete_done() is executed before xdp_do_flush(), as it tells
the napi logic that it is fine to schedule napi context X on another
CPU. Details from a production system triggering this bug using the
veth driver can be found following the first link below.

The second reason is that the XDP_REDIRECT logic in itself relies on
being inside a single NAPI instance through to the xdp_do_flush() call
for RCU protection of all in-kernel data structures. Details can be
found in the second link below.

Fixes: a1e031ffb4 ("dpaa_eth: add XDP_REDIRECT support")
Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
Link: https://lore.kernel.org/r/20221220185903.1105011-1-sbohrer@cloudflare.com
Link: https://lore.kernel.org/all/20210624160609.292325-1-toke@redhat.com/
Acked-by: Camelia Groza <camelia.groza@nxp.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-02-09 11:28:05 +01:00
..
appletalk
arcnet arcnet: fix potential memory leak in com20020_probe() 2022-11-23 12:41:54 +00:00
bonding drivers/net/bonding/bond_3ad: return when there's no aggregator 2023-01-12 12:02:28 +01:00
caif
can can: tcan4x5x: Fix use of register error status mask 2022-12-31 13:32:27 +01:00
dsa net: dsa: microchip: fix probe of I2C-connected KSZ8563 2023-02-01 08:34:45 +01:00
ethernet dpaa_eth: execute xdp_do_flush() before napi_complete_done() 2023-02-09 11:28:05 +01:00
fddi net: defxx: Fix missing err handling in dfx_init() 2022-12-31 13:32:26 +01:00
fjes
hamradio hamradio: baycom_epp: Fix return type of baycom_send_packet() 2022-12-31 13:33:00 +01:00
hippi
hyperv
ieee802154 ca8210: Fix crash by zero initializing data 2022-11-29 14:56:05 +01:00
ipa net: ipa: disable ipa interrupt during suspend 2023-02-01 08:34:22 +01:00
ipvlan ipvlan: hold lower dev to avoid possible use-after-free 2022-11-18 10:39:22 +00:00
mctp mctp: serial: Fix starting value for frame check sequence 2022-12-31 13:32:56 +01:00
mdio net: mdio-mux-meson-g12a: force internal PHY off on mux switch 2023-02-01 08:34:49 +01:00
netdevsim netdevsim: Fix memory leak of nsim_dev->fa_cookie 2022-11-16 12:20:57 -08:00
pcs
phy net: mdio: validate parameter addr in mdiobus_get_phy() 2023-02-01 08:34:19 +01:00
plip net: plip: don't call kfree_skb/dev_kfree_skb() under spin_lock_irq() 2022-12-07 20:10:47 -08:00
ppp use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
pse-pd
slip
team
usb r8152: add vendor/device ID pair for Microsoft Devkit 2023-02-01 08:34:32 +01:00
vmxnet3 vmxnet3: correctly report csum_level for encapsulated packet 2023-01-12 12:01:58 +01:00
vxlan vxlan: Fix memory leaks in error path 2023-01-12 12:02:25 +01:00
wan net: wan: Add checks for NULL for utdm in undo_uhdlc_init and unmap_si_regs 2023-02-01 08:34:17 +01:00
wireguard
wireless wifi: rndis_wlan: Prevent buffer overflow in rndis_query_oid 2023-02-01 08:34:18 +01:00
wwan net: wwan: iosm: fix memory leak in ipc_mux_init() 2022-12-06 11:39:35 +01:00
xen-netback xen/netback: fix build warning 2022-12-07 16:03:21 +01:00
amt.c
bareudp.c
dummy.c
eql.c
geneve.c
gtp.c
ifb.c
Kconfig
LICENSE.SRC
loopback.c net: loopback: use NET_NAME_PREDICTABLE for name_assign_type 2022-11-25 09:39:05 +00:00
macsec.c net: macsec: fix net device access prior to holding a lock 2022-12-31 13:32:53 +01:00
macvlan.c net: macvlan: Use built-in RCU list checking 2022-11-14 10:50:02 +00:00
macvtap.c
Makefile
mdio.c
mhi_net.c net: mhi: Fix memory leak in mhi_net_dellink() 2022-11-14 11:21:02 +00:00
mii.c
net_failover.c
netconsole.c
nlmon.c
ntb_netdev.c ntb_netdev: Use dev_kfree_skb_any() in interrupt context 2022-12-31 13:32:28 +01:00
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c
thunderbolt.c net: thunderbolt: fix memory leak in tbnet_open() 2022-12-08 09:07:37 -08:00
tun.c net: tun: Fix use-after-free in tun_detach() 2022-11-29 12:14:15 +01:00
veth.c veth: Fix race with AF_XDP exposing old or uninitialized descriptors 2023-01-12 12:01:59 +01:00
virtio_net.c virtio-net: execute xdp_do_flush() before napi_complete_done() 2023-02-09 11:28:04 +01:00
vrf.c net: vrf: determine the dst using the original ifindex for multicast 2023-01-12 12:01:57 +01:00
vsockmon.c
xen-netfront.c xen-netfront: Fix NULL sring after live migration 2022-12-05 11:35:29 +00:00