linux/drivers
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
..
accessibility tty: fix possible null-ptr-defer in spk_ttyio_release 2023-01-24 07:24:37 +01:00
acpi use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
amba
android
ata ata: pata_cs5535: Don't build on UML 2023-02-01 08:34:34 +01:00
atm
auxdisplay
base driver core: Fix test_async_probe_init saves device in wrong array 2023-02-01 08:34:26 +01:00
bcma
block use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
bluetooth Bluetooth: hci_qca: Fix driver shutdown on closed serdev 2023-01-24 07:24:32 +01:00
bus bus: sunxi-rsb: Fix error handling in sunxi_rsb_init() 2023-02-09 11:27:59 +01:00
cdrom
char use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
clk
clocksource
comedi comedi: adv_pci1760: Fix PWM instruction handling 2023-01-24 07:24:35 +01:00
connector
counter
cpufreq cpufreq: armada-37xx: stop using 0 as NULL pointer 2023-02-01 08:34:31 +01:00
cpuidle
crypto virtio-crypto: fix memory leak in virtio_crypto_alg_skcipher_close_session() 2023-01-12 12:02:08 +01:00
cxl
dax
dca
devfreq
dio
dma dmaengine: imx-sdma: Fix a possible memory leak in sdma_transfer_init 2023-02-06 08:06:33 +01:00
dma-buf dma-buf: fix dma_buf_export init order v2 2023-01-24 07:24:30 +01:00
edac EDAC/qcom: Do not pass llcc_driv_data as edac_device_ctl_info's pvt_info 2023-02-01 08:34:40 +01:00
eisa
extcon
firewire firewire: fix memory leak for payload of request subaction to IEC 61883-1 FCP region 2023-02-09 11:27:59 +01:00
firmware firmware: arm_scmi: Clear stale xfer->hdr.status 2023-02-06 08:06:31 +01:00
fpga
fsi use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
gnss
gpio gpiolib-acpi: Don't set GPIOs for wakeup in S3 mode 2023-02-06 08:06:34 +01:00
gpu drm/ssd130x: Init display before the SSD130X_DISPLAY_ON command 2023-02-09 11:28:02 +01:00
greybus
hid HID: playstation: sanity check DualSense calibration data. 2023-02-06 08:06:33 +01:00
hsi
hte
hv
hwmon
hwspinlock
hwtracing
i2c i2c: designware: Fix unbalanced suspended flag 2023-02-01 08:34:42 +01:00
i3c
idle
iio
infiniband use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
input Input: i8042 - add Clevo PCX0DX to i8042 quirk table 2023-02-01 08:34:50 +01:00
interconnect interconnect: qcom: msm8996: Fix regmap max_register values 2023-02-01 08:34:06 +01:00
iommu iommu/arm-smmu: Report IOMMU_CAP_CACHE_COHERENCY even betterer 2023-01-18 11:58:21 +01:00
ipack
irqchip
isdn use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
leds
macintosh
mailbox
mcb
md block: handle bio_split_to_limits() NULL return 2023-01-18 11:58:33 +01:00
media media: v4l2-ctrls-api.c: move ctrl->is_new = 1 to the correct line 2023-02-09 11:28:01 +01:00
memory memory: mvebu-devbus: Fix missing clk_disable_unprepare in mvebu_devbus_probe() 2023-02-01 08:34:02 +01:00
memstick
message
mfd
misc use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
mmc mmc: sdhci-esdhc-imx: correct the tuning start tap and step setting 2023-01-24 07:24:35 +01:00
most
mtd mtd: cfi: allow building spi-intel standalone 2023-01-18 11:58:24 +01:00
mux
net dpaa_eth: execute xdp_do_flush() before napi_complete_done() 2023-02-09 11:28:05 +01:00
nfc nfc: pn533: Wait for out_urb's completion in pn533_usb_send_frame() 2023-01-18 11:58:26 +01:00
ntb
nubus
nvdimm
nvme use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
nvmem
of of: fdt: Honor CONFIG_CMDLINE* even without /chosen node, take 2 2023-01-24 07:24:32 +01:00
opp
parisc
parport
pci
pcmcia
peci
perf Partially revert "perf/arm-cmn: Optimise DTC counter accesses" 2023-02-01 08:34:49 +01:00
phy phy: phy-can-transceiver: Skip warning if no "max-bitrate" 2023-02-01 08:34:25 +01:00
pinctrl pinctrl: rockchip: fix mux route data for rk3568 2023-02-01 08:34:20 +01:00
platform platform/x86: apple-gmux: Add apple_gmux_detect() helper 2023-02-01 08:34:46 +01:00
pnp
power
powercap
pps
ps3
ptp
pwm
rapidio
ras
regulator regulator: da9211: Use irq handler when ready 2023-01-18 11:58:22 +01:00
remoteproc
reset reset: uniphier-glue: Fix possible null-ptr-deref 2023-02-01 08:34:05 +01:00
rpmsg
rtc
s390 use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
sbus
scsi use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
sh
siox
slimbus
soc PM: AVS: qcom-cpr: Fix an error handling path in cpr_probe() 2023-02-01 08:34:08 +01:00
soundwire
spi spi: spidev: remove debug messages that access spidev->spi without locking 2023-02-01 08:34:32 +01:00
spmi
ssb
staging staging: vchiq_arm: fix enum vchiq_status return types 2023-01-24 07:24:35 +01:00
target use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
tc
tee
thermal thermal: intel: int340x: Add locking to int340x_thermal_get_trip_type() 2023-02-01 08:34:48 +01:00
thunderbolt thunderbolt: Do not call PM runtime functions in tb_retimer_scan() 2023-01-24 07:24:37 +01:00
tty serial: exar: Add support for Sealevel 7xxxC serial cards 2023-01-24 07:24:39 +01:00
ufs scsi: ufs: core: Fix devfreq deadlocks 2023-02-01 08:34:39 +01:00
uio
usb use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
vdpa vdpa_sim_net: should not drop the multicast/broadcast packet 2023-01-24 07:24:31 +01:00
vfio vfio/type1: Respect IOMMU reserved regions in vfio_test_domain_fgsp() 2023-02-01 08:34:36 +01:00
vhost vhost-scsi: unbreak any layout for response 2023-02-09 11:28:04 +01:00
video fbdev: omapfb: avoid stack overflow warning 2023-01-24 07:24:32 +01:00
virt
virtio virtio_pci: modify ENOENT to EINVAL 2023-01-24 07:24:31 +01:00
vlynq
w1 w1: fix WARNING after calling w1_process() 2023-02-01 08:34:26 +01:00
watchdog
xen use less confusing names for iov_iter direction initializers 2023-02-09 11:28:04 +01:00
zorro
Kconfig
Makefile