android_kernel_motorola_sm6225/drivers
Robert Hancock 63e31db130 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:20:27 +01:00
..
accessibility
acpi ACPI: battery: Add the ThinkPad "Not Charging" quirk 2022-01-27 09:04:27 +01:00
amba ARM: 9120/1: Revert "amba: make use of -1 IRQs warn" 2021-11-06 13:58:45 +01:00
android binder: fix async_free_space accounting for empty parcels 2022-01-05 12:34:59 +01:00
ata ata: pata_hpt37x: fix PCI clock detection 2022-03-08 19:04:07 +01:00
atm atm: nicstar: register the interrupt handler in the right place 2021-07-20 16:16:01 +02:00
auxdisplay auxdisplay: ht16k33: Fix frame buffer device blanking 2021-11-26 11:36:15 +01:00
base firmware_loader: fix pre-allocated buf built-in firmware use 2021-11-26 11:36:20 +01:00
bcma bcma: Fix memory leak for internally-handled cores 2021-09-22 11:47:55 +02:00
block xen/blkfront: don't use gnttab_query_foreign_access() for mapped status 2022-03-11 10:15:12 +01:00
bluetooth Bluetooth: hci_bcm: Check for error irq 2022-01-27 09:04:20 +01:00
bus bus: qcom: Put child node before return 2021-05-22 10:59:29 +02:00
cdrom cdrom: gdrom: initialize global variable at init time 2021-05-26 11:48:34 +02:00
char char/mwave: Adjust io port register size 2022-01-27 09:04:22 +01:00
clk clk: bcm-2835: Remove rounding up the dividers 2022-01-27 09:04:16 +01:00
clocksource clocksource/drivers/timer-ti-dm: Select TIMER_OF 2021-11-26 11:36:10 +01:00
connector
cpufreq cpufreq: schedutil: Destroy mutex before kobject_put() frees the memory 2021-10-06 15:31:21 +02:00
cpuidle cpuidle: Fix kobject memory leaks in error paths 2021-11-26 11:36:08 +01:00
crypto crypto: stm32/crc32 - Fix kernel BUG triggered in probe() 2022-01-27 09:04:31 +01:00
dax
dca
devfreq
dio
dma dmaengine: shdma: Fix runtime PM imbalance on error 2022-03-08 19:04:06 +01:00
dma-buf dma-buf/sync_file: Don't leak fences on merge failure 2021-07-28 11:13:45 +02:00
edac EDAC: Fix calculation of returned address and next offset in edac_align_ptr() 2022-02-23 11:58:40 +01:00
eisa
extcon extcon: max8997: Add missing modalias string 2021-07-20 16:15:57 +02:00
firewire firewire: nosy: Fix a use-after-free bug in nosy_ioctl() 2021-04-07 12:48:50 +02:00
firmware arm/arm64: smccc/psci: add arm_smccc_1_1_get_conduit() 2022-03-11 10:15:11 +01:00
fmc
fpga fpga: machxo2-spi: Fix missing error code in machxo2_write_complete() 2021-10-06 15:31:14 +02:00
fsi fsi/sbefifo: Fix reset timeout 2021-07-20 16:15:55 +02:00
gnss
gpio gpio: ts4900: Do not set DAT and OE together 2022-03-16 13:20:26 +01:00
gpu Revert "drm/nouveau/pmu/gm200-: avoid touching PMU outside of DEVINIT/PREOS/ACR" 2022-03-02 11:38:14 +01:00
hid HID: add mapping for KEY_ALL_APPLICATIONS 2022-03-08 19:04:09 +01:00
hsi HSI: core: Fix return freed object in hsi_new_client 2022-01-27 09:04:24 +01:00
hv Drivers: hv: vmbus: Fix memory leak in vmbus_add_channel_kobj 2022-02-23 11:58:41 +01:00
hwmon hwmon: (dell-smm) Speed up setting of fan speed 2022-02-16 12:51:47 +01:00
hwspinlock
hwtracing intel_th: Wait until port is in reset before programming it 2021-07-20 16:16:10 +02:00
i2c i2c: qup: allow COMPILE_TEST 2022-03-08 19:04:06 +01:00
ide block: genhd: add 'groups' argument to device_add_disk 2021-03-11 14:04:59 +01:00
idle
iio iio: adc: men_z188_adc: Fix a resource leak in an error handling path 2022-03-02 11:38:15 +01:00
infiniband RDMA/ib_srp: Fix a deadlock 2022-03-02 11:38:13 +01:00
input Input: elan_i2c - fix regulator enable count imbalance after suspend/resume 2022-03-08 19:04:09 +01:00
iommu iommu/amd: Fix loop timeout issue in iommu_ga_log_enable() 2022-02-08 18:23:15 +01:00
ipack ipack: ipoctal: fix module reference leak 2021-10-06 15:31:25 +02:00
irqchip irqchip/sifive-plic: Add missing thead,c900-plic match string 2022-02-23 11:58:41 +01:00
isdn mISDN: change function names to avoid conflicts 2022-01-11 13:58:50 +01:00
leds leds: ktd2692: Fix an error handling path 2021-07-20 16:15:57 +02:00
lightnvm lightnvm: select CONFIG_CRC32 2021-01-17 14:04:22 +01:00
macintosh
mailbox
mcb mcb: fix error handling in mcb_alloc_bus() 2021-10-06 15:31:12 +02:00
md dm space map common: add bounds check to sm_ll_lookup_bitmap() 2022-01-27 09:04:28 +01:00
media media: rcar-csi2: Optimize the selection PHTW register 2022-01-27 09:04:31 +01:00
memory memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe 2021-11-26 11:36:13 +01:00
memstick memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host() 2021-11-26 11:36:09 +01:00
message
mfd mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe() 2022-01-27 09:04:12 +01:00
misc misc: lattice-ecp3-config: Fix task hung when firmware load failed 2022-01-27 09:04:23 +01:00
mmc mmc: block: fix read single on recovery logic 2022-02-23 11:58:39 +01:00
mtd mtd: rawnand: brcmnand: Fixed incorrect sub-page ECC status 2022-02-23 11:58:41 +01:00
mux
net net: macb: Fix lost RX packet wakeup race in NAPI receive 2022-03-16 13:20:27 +01:00
nfc NFC: port100: fix use-after-free in port100_send_complete 2022-03-16 13:20:26 +01:00
ntb NTB: perf: Fix an error code in perf_setup_inbuf() 2021-09-22 11:48:13 +02:00
nubus
nvdimm block: genhd: add 'groups' argument to device_add_disk 2021-03-11 14:04:59 +01:00
nvme nvme-rdma: fix possible use-after-free in transport error_recovery work 2022-02-23 11:58:38 +01:00
nvmem nvmem: Fix shift-out-of-bound (UBSAN) with byte size cells 2021-10-20 11:23:02 +02:00
of of: Don't allow __of_attached_node_sysfs() without CONFIG_SYSFS 2021-09-22 11:48:07 +02:00
opp opp: remove WARN when no valid OPPs remain 2021-09-03 09:58:01 +02:00
oprofile
parisc parisc: Fix sglist access in ccio-dma.c 2022-02-23 11:58:37 +01:00
parport parport: remove non-zero check on count 2021-09-22 11:48:08 +02:00
pci PCI: pciehp: Fix infinite loop in IRQ handler upon power fault 2022-03-08 19:04:08 +01:00
pcmcia pcmcia: fix setting of kthread task states 2022-01-27 09:04:21 +01:00
perf perf/arm_pmu_platform: Fix error handling 2021-05-22 10:59:15 +02:00
phy phy: qcom-qusb2: Fix a memory leak on probe 2021-11-26 11:36:13 +01:00
pinctrl pinctrl: stm32: consider the GPIO offset to expose all the GPIO lines 2021-12-29 12:20:47 +01:00
platform platform/x86: apple-gmux: use resource_size() with res 2022-01-05 12:34:58 +01:00
pnp
power power: bq25890: Enable continuous conversion for ADC at charging 2022-01-27 09:04:30 +01:00
powercap
pps
ps3
ptp ptp_pch: Load module automatically if ID matches 2021-10-13 10:10:51 +02:00
pwm pwm: stm32-lp: Don't modify HW state in .remove() callback 2021-09-26 13:39:49 +02:00
rapidio rapidio: handle create_workqueue() failure 2021-05-26 11:48:33 +02:00
ras
regulator regulator: core: Let boot-on regulators be powered off 2022-01-27 09:04:31 +01:00
remoteproc remoteproc: qcom_q6v5_mss: Validate MBA firmware size before load 2021-02-13 13:51:14 +01:00
reset reset: ti-syscon: fix to_ti_syscon_reset_data macro 2021-07-28 11:13:42 +02:00
rpmsg rpmsg: char: Fix race between the release of rpmsg_eptdev and cdev 2022-02-08 18:23:07 +01:00
rtc rtc: cmos: Evaluate century appropriate 2022-02-08 18:23:18 +01:00
s390 scsi: zfcp: Fix failed recovery on gone remote port with non-NPIV FCP devices 2022-02-08 18:23:03 +01:00
sbus
scsi xen/scsifront: don't use gnttab_query_foreign_access() for mapped status 2022-03-11 10:15:13 +01:00
sfi
sh maple: fix wrong return value of maple_bus_init(). 2021-11-26 11:36:21 +01:00
siox
slimbus slimbus: ngd: reset dma setup during runtime pm 2021-08-26 08:36:48 -04:00
sn
soc soc: fsl: qe: Check of ioremap return value 2022-03-08 19:04:09 +01:00
soundwire soundwire: stream: fix memory leak in stream config error path 2021-05-22 10:59:30 +02:00
spi spi: meson-spicc: add IRQ check in meson_spicc_probe 2022-02-08 18:23:16 +01:00
spmi
ssb ssb: Fix error return code in ssb_bus_scan() 2021-07-20 16:15:50 +02:00
staging staging: gdm724x: fix use after free in gdm_lte_rx() 2022-03-16 13:20:27 +01:00
target scsi: target: iscsi: Make sure the np under each tpg is unique 2022-02-16 12:51:44 +01:00
tc
tee tee: fix put order in teedev_close_context() 2022-01-27 09:04:17 +01:00
thermal thermal: core: Reset previous low and high trip during thermal zone init 2021-12-08 08:50:11 +01:00
thunderbolt thunderbolt: dma_port: Fix NVM read buffer bounds and offset issue 2021-06-03 08:38:04 +02:00
tty tty: n_gsm: fix encoding of control signal octet bit DV 2022-03-02 11:38:19 +01:00
uio
usb usb: gadget: clear related members when goto fail 2022-03-08 19:04:07 +01:00
uwb
vfio vfio: Use config not menuconfig for VFIO_NOIOMMU 2021-09-22 11:48:01 +02:00
vhost vhost/vsock: don't check owner in vhost_vsock_stop() while releasing 2022-03-02 11:38:09 +01:00
video vgacon: Propagate console boot parameters before calling `vc_resize' 2021-12-08 08:50:14 +01:00
virt
virtio virtio: write back F_VERSION_1 before validate 2021-10-20 11:23:02 +02:00
visorbus visorbus: fix error return code in visorchipset_init() 2021-07-20 16:15:55 +02:00
vlynq
vme
w1 w1: Misuse of get_user()/put_user() reported by sparse 2022-01-27 09:04:29 +01:00
watchdog ar7: fix kernel builds for compiler test 2021-11-26 11:36:15 +01:00
xen xen/gnttab: fix gnttab_end_foreign_access() without page specified 2022-03-11 10:15:13 +01:00
zorro
Kconfig
Makefile