milos-linux/drivers
Marek Vasut e0863634bf net: ks8851: Queue RX packets in IRQ handler instead of disabling BHs
Currently the driver uses local_bh_disable()/local_bh_enable() in its
IRQ handler to avoid triggering net_rx_action() softirq on exit from
netif_rx(). The net_rx_action() could trigger this driver .start_xmit
callback, which is protected by the same lock as the IRQ handler, so
calling the .start_xmit from netif_rx() from the IRQ handler critical
section protected by the lock could lead to an attempt to claim the
already claimed lock, and a hang.

The local_bh_disable()/local_bh_enable() approach works only in case
the IRQ handler is protected by a spinlock, but does not work if the
IRQ handler is protected by mutex, i.e. this works for KS8851 with
Parallel bus interface, but not for KS8851 with SPI bus interface.

Remove the BH manipulation and instead of calling netif_rx() inside
the IRQ handler code protected by the lock, queue all the received
SKBs in the IRQ handler into a queue first, and once the IRQ handler
exits the critical section protected by the lock, dequeue all the
queued SKBs and push them all into netif_rx(). At this point, it is
safe to trigger the net_rx_action() softirq, since the netif_rx()
call is outside of the lock that protects the IRQ handler.

Fixes: be0384bf59 ("net: ks8851: Handle softirqs at the end of IRQ thread to fix hang")
Tested-by: Ronald Wahl <ronald.wahl@raritan.com> # KS8851 SPI
Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20240502183436.117117-1-marex@denx.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-05-03 15:15:03 -07:00
..
accel accel/ivpu: Fix deadlock in context_xa 2024-04-08 10:55:01 +02:00
accessibility speakup: Avoid crash on very long word 2024-04-11 14:32:53 +02:00
acpi Merge branch 'acpi-cppc' 2024-04-25 19:25:54 +02:00
amba
android binder: check offset alignment in binder_get_object() 2024-04-11 15:19:12 +02:00
ata ata: libata-core: Allow command duration limits detection for ACS-4 drives 2024-04-13 10:42:28 +09:00
atm
auxdisplay
base regmap: Fixes for v6.9 2024-04-05 17:21:16 -07:00
bcma
block nullblk: Fix cleanup order in null_add_dev() error path 2024-04-02 07:43:24 -06:00
bluetooth Bluetooth: qca: set power_ctrl_enabled on NULL returned by gpiod_get_optional() 2024-04-24 16:26:22 -04:00
bus Char/Misc and other driver subsystem updates for 6.9-rc1 2024-03-21 13:21:31 -07:00
cache cache: sifive_ccache: Partially convert to a platform driver 2024-03-28 22:40:56 +00:00
cdrom
cdx
char random: handle creditable entropy from atomic process context 2024-04-17 13:53:18 +02:00
clk clk: mediatek: mt7988-infracfg: fix clocks for 2nd PCIe port 2024-04-10 20:50:26 -07:00
clocksource A set of updates for clocksource and clockevent drivers: 2024-03-23 14:42:45 -07:00
comedi comedi: vmk80xx: fix incomplete endpoint checking 2024-04-11 15:16:23 +02:00
connector
counter
cpufreq RISC-V Patches for the 6.9 Merge Window 2024-03-22 10:41:13 -07:00
cpuidle RISC-V Patches for the 6.9 Merge Window 2024-03-22 10:41:13 -07:00
crypto x86/CPU/AMD: Track SNP host status with cc_platform_*() 2024-04-04 10:40:30 +02:00
cxl cxl/core: Fix potential payload size confusion in cxl_mem_get_poison() 2024-04-22 08:58:59 -07:00
dax libnvdimm updates for v6.9 2024-03-15 11:58:32 -07:00
dca
devfreq
dio
dma dmaengine: idxd: Fix oops during rmmod on single-CPU platforms 2024-04-07 17:56:06 +05:30
dma-buf Merge drm/drm-fixes into drm-misc-fixes 2024-03-25 21:11:58 +01:00
dpll dpll: fix dpll_pin_on_pin_register() for multiple parent pins 2024-04-25 08:32:09 -07:00
edac
eisa
extcon
firewire firewire: ohci: mask bus reset interrupts between ISR and bottom half 2024-04-06 09:36:46 +09:00
firmware Qualcomm driver fix for v6.9 2024-04-26 18:08:02 +02:00
fpga Char/Misc and other driver subsystem updates for 6.9-rc1 2024-03-21 13:21:31 -07:00
fsi
gnss
gpio intel-gpio for v6.9-2 2024-04-25 14:35:55 +02:00
gpu - Fix error paths on managed allocations 2024-04-26 12:56:58 +10:00
greybus Char/Misc and other driver subsystem updates for 6.9-rc1 2024-03-21 13:21:31 -07:00
hid HID: mcp-2221: cancel delayed_work only when CONFIG_IIO is enabled 2024-04-12 17:48:53 +02:00
hsi
hte
hv hyperv-fixes for v6.9-rc4 2024-04-11 16:23:56 -07:00
hwmon - Kuan-Wei Chiu has developed the well-named series "lib min_heap: Min 2024-03-14 18:03:09 -07:00
hwspinlock
hwtracing
i2c i2c: smbus: fix NULL function pointer dereference 2024-04-27 12:57:57 +02:00
i3c
idle
iio Char/Misc and other driver subsystem updates for 6.9-rc1 2024-03-21 13:21:31 -07:00
infiniband RDMA/mlx5: Fix port number for counter query in multi-port configuration 2024-04-08 13:33:10 +03:00
input TTY/Serial driver update for 6.9-rc1 2024-03-21 12:44:10 -07:00
interconnect interconnect fixes for v6.9-rc 2024-04-11 14:44:49 +02:00
iommu iommufd for 6.9 first rc 2024-04-19 14:02:21 -07:00
ipack
irqchip irqchip/gic-v3-its: Prevent double free on error 2024-04-25 14:30:46 +02:00
isdn mISDN: fix MISDN_TIME_STAMP handling 2024-04-09 17:01:01 -07:00
leds - Kuan-Wei Chiu has developed the well-named series "lib min_heap: Min 2024-03-14 18:03:09 -07:00
macintosh powerpc updates for 6.9 2024-03-15 17:53:48 -07:00
mailbox
mcb
md - Fix 6.9 regression so that DM device removal is performed 2024-04-26 11:17:24 -07:00
media media: mediatek: vcodec: support 36 bits physical address 2024-03-26 09:52:59 +01:00
memory Char/Misc and other driver subsystem updates for 6.9-rc1 2024-03-21 13:21:31 -07:00
memstick
message
mfd TTY/Serial driver update for 6.9-rc1 2024-03-21 12:44:10 -07:00
misc at24 fixes for v6.9-rc6 2024-04-26 07:59:20 +02:00
mmc MMC host: 2024-04-26 13:17:33 -07:00
most
mtd There has been OTP support improvements in the NVMEM subsystem, and 2024-04-26 13:05:34 -07:00
mux
net net: ks8851: Queue RX packets in IRQ handler instead of disabling BHs 2024-05-03 15:15:03 -07:00
nfc NFC: trf7970a: disable all regulators on removal 2024-04-22 14:19:58 -07:00
ntb
nubus
nvdimm libnvdimm updates for v6.9 2024-03-15 11:58:32 -07:00
nvme nvme-fc: rename free_ctrl callback to match name pattern 2024-04-04 08:47:56 -07:00
nvmem
of of: module: prevent NULL pointer dereference in vsnprintf() 2024-03-27 17:05:07 -05:00
opp
parisc
parport
pci Revert "PCI: Mark LSI FW643 to avoid bus reset" 2024-03-29 11:57:12 -05:00
pcmcia
peci
perf drivers/perf: riscv: Disable PERF_SAMPLE_BRANCH_* while not supported 2024-03-26 14:09:18 -07:00
phy phy: ti: tusb1210: Resolve charger-det crash if charger psy is unregistered 2024-04-12 16:57:19 +05:30
pinctrl Pin control fixes for the v6.9 series: 2024-04-30 08:50:58 -07:00
platform platform-drivers-x86 for v6.9-4 2024-04-30 09:06:05 -07:00
pmdomain
pnp
power power: supply: mt6360_charger: Fix of_match for usb-otg-vbus regulator 2024-04-15 13:31:37 +02:00
powercap powercap: intel_rapl: Convert to platform remove callback returning void 2024-03-13 20:45:54 +01:00
pps
ps3
ptp
pwm pwm: dwc: allow suspend/resume for 16 channels 2024-04-15 17:28:13 +02:00
rapidio
ras RAS: Avoid build errors when CONFIG_DEBUG_FS=n 2024-03-26 21:48:21 +01:00
regulator regulator: vqmmc-ipq4019: fix module autoloading 2024-04-10 18:48:59 +01:00
remoteproc remoteproc updates for v6.9 2024-03-21 10:37:39 -07:00
reset
rpmsg
rtc RTC for 6.9 2024-03-21 17:16:46 -07:00
s390 s390/qeth: Fix kernel panic after setting hsuid 2024-05-02 09:18:58 +02:00
sbus This includes the following changes related to sparc for v6.9: 2024-03-15 12:47:21 -07:00
scsi scsi: sd: Only print updates to permanent stream count 2024-04-24 21:03:01 -04:00
sh
siox SIOX changes for 6.9-rc1 2024-03-21 15:18:18 -07:00
slimbus
soc soc: mediatek: mtk-socinfo: depends on CONFIG_SOC_BUS 2024-04-23 12:09:12 +02:00
soundwire soundwire: amd: fix for wake interrupt handling for clockstop mode 2024-03-28 23:40:33 +05:30
spi spi: mchp-pci1xxx: Fix a possible null pointer dereference in pci1xxx_spi_probe 2024-04-03 11:04:58 +01:00
spmi
ssb
staging staging: vc04_services: fix information leak in create_component() 2024-03-25 19:10:01 +01:00
target scsi: target: Fix SELinux error when systemd-modules loads the target module 2024-04-05 21:37:54 -04:00
tc
tee
thermal thermal/debugfs: Add missing count increment to thermal_debug_tz_trip_up() 2024-04-19 15:08:19 +02:00
thunderbolt thunderbolt: Avoid notify PM core about runtime PM resume 2024-04-10 10:49:58 +03:00
tty serial: stm32: Reset .throttled state in .startup() 2024-04-17 13:26:45 +02:00
ufs scsi: ufs: qcom: Add missing interconnect bandwidth values for Gear 5 2024-04-08 15:06:56 -04:00
uio hyperv-fixes for v6.9-rc4 2024-04-11 16:23:56 -07:00
usb USB-serial device ids for 6.9-rc5 2024-04-19 16:07:18 +02:00
vdpa vDPA: code clean for vhost_vdpa uapi 2024-04-22 17:07:13 -04:00
vfio VFIO updates for v6.9-rc1 2024-03-15 13:21:13 -07:00
vhost vhost: correct misleading printing information 2024-04-08 04:11:04 -04:00
video fbdev: fix incorrect address computation in deferred IO 2024-04-24 15:03:37 +02:00
virt Revert "vmgenid: emit uevent when VMGENID updates" 2024-04-18 14:47:23 +02:00
virtio virtio: store owner from modules with register_virtio_driver() 2024-04-08 04:11:04 -04:00
w1
watchdog linux-watchdog 6.9-rc1 tag 2024-03-17 12:06:10 -07:00
xen xen: branch for v6.9-rc1 2024-03-19 08:48:09 -07:00
zorro
Kconfig
Makefile