Robert Hancock
ba0d7beec2
net: macb: Fix lost RX packet wakeup race in NAPI receive
...
commit 0bf476fc3624e3a72af4ba7340d430a91c18cd67 upstream.
There is an oddity in the way the RSR register flags propagate to the
ISR register (and the actual interrupt output) on this hardware: it
appears that RSR register bits only result in ISR being asserted if the
interrupt was actually enabled at the time, so enabling interrupts with
RSR bits already set doesn't trigger an interrupt to be raised. There
was already a partial fix for this race in the macb_poll function where
it checked for RSR bits being set and re-triggered NAPI receive.
However, there was a still a race window between checking RSR and
actually enabling interrupts, where a lost wakeup could happen. It's
necessary to check again after enabling interrupts to see if RSR was set
just prior to the interrupt being enabled, and re-trigger receive in that
case.
This issue was noticed in a point-to-point UDP request-response protocol
which periodically saw timeouts or abnormally high response times due to
received packets not being processed in a timely fashion. In many
applications, more packets arriving, including TCP retransmissions, would
cause the original packet to be processed, thus masking the issue.
Fixes: 02f7a34f34 ("net: macb: Re-enable RX interrupt only when RX is done")
Cc: stable@vger.kernel.org
Co-developed-by: Scott McNutt <scott.mcnutt@siriusxm.com>
Signed-off-by: Scott McNutt <scott.mcnutt@siriusxm.com>
Signed-off-by: Robert Hancock <robert.hancock@calian.com>
Tested-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-03-16 13:21:47 +01:00
..
accessibility
acpi
Revert "ACPI: PM: s2idle: Cancel wakeup before dispatching EC GPE"
2022-03-11 11:22:39 +01:00
amba
ARM: 9120/1: Revert "amba: make use of -1 IRQs warn"
2021-11-06 13:59:45 +01:00
android
binder: fix handling of error during copy
2022-01-27 09:19:38 +01:00
ata
ata: pata_hpt37x: fix PCI clock detection
2022-03-08 19:07:46 +01:00
atm
auxdisplay
auxdisplay: ht16k33: Fix frame buffer device blanking
2021-11-17 09:48:45 +01:00
base
PM: s2idle: ACPI: Fix wakeup interrupts handling
2022-02-16 12:52:50 +01:00
bcma
bcma: Fix memory leak for internally-handled cores
2021-09-15 09:47:37 +02:00
block
virtio-blk: Don't use MAX_DISCARD_SEGMENTS if max_discard_seg is zero
2022-03-16 13:21:45 +01:00
bluetooth
Bluetooth: hci_bcm: Check for error irq
2022-01-27 09:19:36 +01:00
bus
bus: ti-sysc: Use CLKDM_NOAUTO for dra7 dcan1 for errata i893
2021-10-13 10:08:19 +02:00
cdrom
char
random: do not throw away excess input to crng_fast_load
2022-01-27 09:19:46 +01:00
clk
clk: qcom: gdsc: Add support to update GDSC transition delay
2022-03-16 13:21:44 +01:00
clocksource
clocksource/drivers/timer-ti-dm: Select TIMER_OF
2021-11-17 09:48:39 +01:00
connector
counter
counter: 104-quad-8: Return error when invalid mode during ceiling_write
2021-09-15 09:47:34 +02:00
cpufreq
cpufreq: Fix initialization of min and max frequency QoS requests
2022-01-27 09:19:44 +01:00
cpuidle
cpuidle: Fix kobject memory leaks in error paths
2021-11-17 09:48:36 +01:00
crypto
crypto: caam - replace this_cpu_ptr with raw_cpu_ptr
2022-01-27 09:19:49 +01:00
dax
dca
devfreq
dio
dma
dmaengine: shdma: Fix runtime PM imbalance on error
2022-03-08 19:07:45 +01:00
dma-buf
dma_fence_array: Fix PENDING_ERROR leak in dma_fence_array_signaled()
2022-01-27 09:19:28 +01:00
edac
EDAC: Fix calculation of returned address and next offset in edac_align_ptr()
2022-02-23 11:59:59 +01:00
eisa
extcon
firewire
firmware
arm/arm64: smccc/psci: add arm_smccc_1_1_get_conduit()
2022-03-11 11:22:37 +01:00
fpga
fpga: machxo2-spi: Fix missing error code in machxo2_write_complete()
2021-09-30 10:09:23 +02:00
fsi
gnss
gpio
gpio: ts4900: Do not set DAT and OE together
2022-03-16 13:21:46 +01:00
gpu
drm/sun4i: mixer: Fix P010 and P210 format numbers
2022-03-16 13:21:45 +01:00
greybus
hid
HID: add mapping for KEY_ALL_APPLICATIONS
2022-03-08 19:07:50 +01:00
hsi
HSI: core: Fix return freed object in hsi_new_client
2022-01-27 09:19:41 +01:00
hv
Drivers: hv: vmbus: Fix memory leak in vmbus_add_channel_kobj
2022-02-23 12:00:00 +01:00
hwmon
hwmon: (dell-smm) Speed up setting of fan speed
2022-02-16 12:52:53 +01:00
hwspinlock
hwtracing
i2c
i2c: qup: allow COMPILE_TEST
2022-03-08 19:07:46 +01:00
i3c
ide
idle
iio
iio: Fix error handling for PM
2022-03-02 11:41:12 +01:00
infiniband
RDMA/ib_srp: Fix a deadlock
2022-03-02 11:41:10 +01:00
input
Input: elan_i2c - fix regulator enable count imbalance after suspend/resume
2022-03-08 19:07:50 +01:00
interconnect
iommu
iommu/amd: Fix loop timeout issue in iommu_ga_log_enable()
2022-02-08 18:24:30 +01:00
ipack
ipack: ipoctal: fix module reference leak
2021-10-06 15:42:36 +02:00
irqchip
irqchip/sifive-plic: Add missing thead,c900-plic match string
2022-02-23 12:00:00 +01:00
isdn
mISDN: change function names to avoid conflicts
2022-01-11 15:23:33 +01:00
leds
leds: trigger: audio: Add an activate callback to ensure the initial brightness is set
2021-09-15 09:47:33 +02:00
lightnvm
macintosh
mailbox
mcb
mcb: fix error handling in mcb_alloc_bus()
2021-09-30 10:09:22 +02:00
md
dm space map common: add bounds check to sm_ll_lookup_bitmap()
2022-01-27 09:19:46 +01:00
media
media: rcar-csi2: Optimize the selection PHTW register
2022-01-27 09:19:51 +01:00
memory
memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe
2021-11-17 09:48:42 +01:00
memstick
memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host()
2021-11-17 09:48:37 +01:00
message
mfd
mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe()
2022-01-16 09:15:38 +01:00
misc
eeprom: ee1004: limit i2c reads to I2C_SMBUS_BLOCK_MAX
2022-02-16 12:52:52 +01:00
mmc
mmc: block: fix read single on recovery logic
2022-02-23 11:59:57 +01:00
mtd
mtd: rawnand: brcmnand: Fixed incorrect sub-page ECC status
2022-02-23 11:59:59 +01:00
mux
net
net: macb: Fix lost RX packet wakeup race in NAPI receive
2022-03-16 13:21:47 +01:00
nfc
NFC: port100: fix use-after-free in port100_send_complete
2022-03-16 13:21:46 +01:00
ntb
NTB: perf: Fix an error code in perf_setup_inbuf()
2021-09-22 12:26:44 +02:00
nubus
nvdimm
libnvdimm/pmem: Fix crash triggered when I/O in-flight during unbind
2021-10-06 15:42:38 +02:00
nvme
nvme-rdma: fix possible use-after-free in transport error_recovery work
2022-02-23 11:59:56 +01:00
nvmem
nvmem: Fix shift-out-of-bound (UBSAN) with byte size cells
2021-10-20 11:40:14 +02:00
of
of: base: Improve argument length mismatch error
2022-01-27 09:19:51 +01:00
opp
opp: Fix return in _opp_add_static_v2()
2021-11-17 09:48:44 +01:00
oprofile
parisc
parisc: Fix sglist access in ccio-dma.c
2022-02-23 11:59:54 +01:00
parport
parport: remove non-zero check on count
2021-09-22 12:26:36 +02:00
pci
PCI: pciehp: Fix infinite loop in IRQ handler upon power fault
2022-02-05 12:35:36 +01:00
pcmcia
pcmcia: fix setting of kthread task states
2022-01-27 09:19:37 +01:00
perf
phy
phy: uniphier-usb3ss: fix unintended writing zeros to PHY register
2022-01-27 09:19:39 +01:00
pinctrl
pinctrl: bcm2835: Fix a few error paths
2022-02-08 18:24:33 +01:00
platform
platform/x86: ISST: Fix possible circular locking dependency detected
2022-02-23 11:59:55 +01:00
pnp
power
power: bq25890: Enable continuous conversion for ADC at charging
2022-01-27 09:19:49 +01:00
powercap
pps
ps3
ptp
ptp_pch: Load module automatically if ID matches
2021-10-13 10:08:19 +02:00
pwm
pwm: stm32-lp: Don't modify HW state in .remove() callback
2021-09-26 14:07:13 +02:00
rapidio
ras
regulator
regulator: qcom_smd: Align probe function with rpmh-regulator
2022-01-27 09:19:46 +01:00
remoteproc
reset
reset: socfpga: add empty driver allowing consumers to probe
2021-11-17 09:48:20 +01:00
rpmsg
rpmsg: char: Fix race between the release of rpmsg_eptdev and cdev
2022-02-01 17:24:36 +01:00
rtc
rtc: cmos: Evaluate century appropriate
2022-02-08 18:24:34 +01:00
s390
scsi: zfcp: Fix failed recovery on gone remote port with non-NPIV FCP devices
2022-02-01 17:24:33 +01:00
sbus
scsi
xen/scsifront: don't use gnttab_query_foreign_access() for mapped status
2022-03-11 11:22:39 +01:00
sfi
sh
maple: fix wrong return value of maple_bus_init().
2021-11-26 10:47:17 +01:00
siox
slimbus
slimbus: ngd: reset dma setup during runtime pm
2021-08-26 08:36:21 -04:00
soc
soc: fsl: qe: Check of ioremap return value
2022-03-08 19:07:49 +01:00
soundwire
spi
spi: spi-zynq-qspi: Fix a NULL pointer dereference in zynq_qspi_exec_mem_op()
2022-03-02 11:41:10 +01:00
spmi
ssb
staging
staging: gdm724x: fix use after free in gdm_lte_rx()
2022-03-16 13:21:47 +01:00
target
scsi: target: iscsi: Make sure the np under each tpg is unique
2022-02-16 12:52:48 +01:00
tc
tee
optee: use driver internal tee_context for some rpc
2022-03-02 11:41:04 +01:00
thermal
thermal: core: Reset previous low and high trip during thermal zone init
2021-12-08 09:01:09 +01:00
thunderbolt
tty
tty: n_gsm: fix NULL pointer access due to DLCI release
2022-03-02 11:41:16 +01:00
uio
usb
usb: gadget: clear related members when goto fail
2022-03-08 19:07:46 +01:00
vfio
vfio: Use config not menuconfig for VFIO_NOIOMMU
2021-09-22 12:26:23 +02:00
vhost
vhost/vsock: don't check owner in vhost_vsock_stop() while releasing
2022-03-02 11:41:00 +01:00
video
vgacon: Propagate console boot parameters before calling `vc_resize'
2021-12-08 09:01:13 +01:00
virt
virtio
virtio_ring: Fix querying of maximum DMA mapping size for virtio device
2021-12-22 09:29:34 +01:00
visorbus
vlynq
vme
w1
w1: Misuse of get_user()/put_user() reported by sparse
2022-01-27 09:19:48 +01:00
watchdog
ar7: fix kernel builds for compiler test
2021-11-17 09:48:46 +01:00
xen
xen/gnttab: fix gnttab_end_foreign_access() without page specified
2022-03-11 11:22:39 +01:00
zorro
Kconfig
Makefile