Adam Goldman
31279bbca4
firewire: ohci: mask bus reset interrupts between ISR and bottom half
...
[ Upstream commit 752e3c53de0fa3b7d817a83050b6699b8e9c6ec9 ]
In the FireWire OHCI interrupt handler, if a bus reset interrupt has
occurred, mask bus reset interrupts until bus_reset_work has serviced and
cleared the interrupt.
Normally, we always leave bus reset interrupts masked. We infer the bus
reset from the self-ID interrupt that happens shortly thereafter. A
scenario where we unmask bus reset interrupts was introduced in 2008 in
a007bb857e : If
OHCI_PARAM_DEBUG_BUSRESETS (8) is set in the debug parameter bitmask, we
will unmask bus reset interrupts so we can log them.
irq_handler logs the bus reset interrupt. However, we can't clear the bus
reset event flag in irq_handler, because we won't service the event until
later. irq_handler exits with the event flag still set. If the
corresponding interrupt is still unmasked, the first bus reset will
usually freeze the system due to irq_handler being called again each
time it exits. This freeze can be reproduced by loading firewire_ohci
with "modprobe firewire_ohci debug=-1" (to enable all debugging output).
Apparently there are also some cases where bus_reset_work will get called
soon enough to clear the event, and operation will continue normally.
This freeze was first reported a few months after a007bb85 was committed,
but until now it was never fixed. The debug level could safely be set
to -1 through sysfs after the module was loaded, but this would be
ineffectual in logging bus reset interrupts since they were only
unmasked during initialization.
irq_handler will now leave the event flag set but mask bus reset
interrupts, so irq_handler won't be called again and there will be no
freeze. If OHCI_PARAM_DEBUG_BUSRESETS is enabled, bus_reset_work will
unmask the interrupt after servicing the event, so future interrupts
will be caught as desired.
As a side effect to this change, OHCI_PARAM_DEBUG_BUSRESETS can now be
enabled through sysfs in addition to during initial module loading.
However, when enabled through sysfs, logging of bus reset interrupts will
be effective only starting with the second bus reset, after
bus_reset_work has executed.
Signed-off-by: Adam Goldman <adamg@pobox.com>
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-05-17 11:43:51 +02:00
..
accessibility
acpi
Revert "ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default"
2024-04-13 12:51:38 +02:00
amba
amba: bus: fix refcount leak
2023-09-23 10:59:52 +02:00
android
binder: check offset alignment in binder_get_object()
2024-05-02 16:18:31 +02:00
ata
ata: sata_gemini: Check clk_enable() result
2024-05-17 11:43:51 +02:00
atm
atm: idt77252: fix a memleak in open_card_ubr0
2024-02-23 08:25:06 +01:00
auxdisplay
base
PM: sleep: wakeirq: fix wake irq warning in system suspend
2024-04-13 12:51:25 +02:00
bcma
block
loop: loop_set_status_from_info() check before assignment
2024-04-13 12:51:30 +02:00
bluetooth
Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x0bda:0x4853
2024-05-02 16:18:36 +02:00
bus
bus: tegra-aconnect: Update dependency to ARCH_TEGRA
2024-03-26 18:22:15 -04:00
cdrom
char
hwrng: core - Fix page fault dead lock on mmap-ed hwrng
2024-02-23 08:24:48 +01:00
clk
clk: sunxi-ng: h6: Reparent CPUX during PLL CPUX rate change
2024-05-17 11:43:50 +02:00
clocksource
clocksource/drivers/timer-atmel-tcb: Fix initialization on SAM9 hardware
2023-11-28 16:50:13 +00:00
connector
counter
cpufreq
cpufreq: imx6q: Don't disable 792 Mhz OPP unnecessarily
2023-12-08 08:44:28 +01:00
cpuidle
crypto
crypto: qat - resolve race condition during AER recovery
2024-04-13 12:51:23 +02:00
dax
dca
devfreq
PM / devfreq: Fix leak in devfreq_dev_release()
2023-09-23 10:59:54 +02:00
dio
dma
dmaengine: Revert "dmaengine: pl330: issue_pending waits until WFP state"
2024-05-17 11:43:46 +02:00
dma-buf
dma-buf/sw_sync: Avoid recursive lock during fence signal
2023-08-30 16:27:28 +02:00
edac
EDAC/thunderx: Fix possible out-of-bounds string access
2024-01-25 14:34:21 -08:00
eisa
extcon
firewire
firewire: ohci: mask bus reset interrupts between ISR and bottom half
2024-05-17 11:43:51 +02:00
firmware
firmware: meson_sm: fix to avoid potential NULL pointer dereference
2024-04-13 12:51:40 +02:00
fpga
fsi
fsi: master-ast-cf: Add MODULE_FIRMWARE macro
2023-09-23 10:59:37 +02:00
gnss
gpio
gpio: 74x164: Enable output pins after registers are reset
2024-03-06 14:36:10 +00:00
gpu
drm/amdgpu: Fix leak when GPU memory allocation fails
2024-05-02 16:18:36 +02:00
greybus
hid
HID: i2c-hid: remove I2C_HID_READ_PENDING flag to prevent lock-up
2024-05-02 16:18:37 +02:00
hsi
hv
hwmon
hwmon: (amc6821) add of_match table
2024-04-13 12:51:26 +02:00
hwspinlock
hwtracing
coresight: etm4x: Fix width of CCITMIN field
2024-01-25 14:34:21 -08:00
i2c
i2c: smbus: fix NULL function pointer dereference
2024-05-02 16:18:37 +02:00
i3c
i3c: master: cdns: Update maximum prescaler value for i2c clock
2024-02-23 08:25:02 +01:00
ide
idle
iio
iio: magnetometer: rm3100: add boundary check for the value read from RM3100_REG_TMRC
2024-02-23 08:25:11 +01:00
infiniband
RDMA/mlx5: Fix port number for counter query in multi-port configuration
2024-05-02 16:18:30 +02:00
input
Input: synaptics-rmi4 - fail probing if memory allocation for "phys" fails
2024-04-13 12:51:38 +02:00
interconnect
interconnect: Treat xlate() returning NULL node as an error
2024-01-08 11:29:45 +01:00
iommu
iommu/amd: Mark interrupt as managed
2024-03-26 18:22:15 -04:00
ipack
irqchip
irqchip/gic-v3-its: Prevent double free on error
2024-05-02 16:18:36 +02:00
isdn
mISDN: Update parameter type of dsp_cmx_send()
2023-08-16 18:19:23 +02:00
leds
leds: trigger: panic: Don't register panic notifier if creating the trigger failed
2024-02-23 08:25:02 +01:00
lightnvm
macintosh
mailbox
mailbox: ti-msgmgr: Fill non-message tx data fields with 0x0
2023-07-27 08:37:23 +02:00
mcb
mcb: fix error handling for different scenarios when parsing
2023-11-28 16:50:19 +00:00
md
dm: limit the number of targets and parameter size area
2024-05-02 16:18:37 +02:00
media
media: sta2x11: fix irq handler cast
2024-04-13 12:51:38 +02:00
memory
memstick
message
mfd
mfd: altera-sysmgr: Call of_node_put() only when of_parse_phandle() takes a ref
2024-03-26 18:22:21 -04:00
misc
VMCI: Fix possible memcpy() run-time warning in vmci_datagram_invoke_guest_handler()
2024-04-13 12:51:40 +02:00
mmc
mmc: core: Avoid negative index with array access
2024-04-13 12:51:31 +02:00
mtd
mtd: diskonchip: work around ubsan link failure
2024-05-02 16:18:36 +02:00
mux
net
net: bcmgenet: Reset RBUF on first open
2024-05-17 11:43:51 +02:00
nfc
NFC: trf7970a: disable all regulators on removal
2024-05-02 16:18:33 +02:00
ntb
ntb: Fix calculation ntb_transport_tx_free_entry()
2023-09-23 10:59:55 +02:00
nubus
nvdimm
nd_btt: Make BTT lanes preemptible
2023-11-20 10:30:12 +01:00
nvme
nvmet-fc: abort command when there is no binding
2024-03-01 13:13:34 +01:00
nvmem
nvmem: meson-efuse: fix function pointer type mismatch
2024-04-13 12:51:26 +02:00
of
of: gpio unittest kfree() wrong object
2024-02-23 08:25:15 +01:00
opp
OPP: Fix passing 0 to PTR_ERR in _opp_attach_genpd()
2023-09-23 10:59:40 +02:00
oprofile
parisc
parisc: iosapic.c: Fix sparse warnings
2023-10-10 21:46:39 +02:00
parport
parport: parport_serial: Add Brainboxes device IDs and geometry
2024-01-25 14:34:21 -08:00
pci
PCI/PM: Drain runtime-idle callbacks before driver removal
2024-04-13 12:51:25 +02:00
pcmcia
pcmcia: ds: fix possible name leak in error path in pcmcia_device_add()
2023-11-20 10:30:14 +01:00
perf
perf/smmuv3: Enable HiSilicon Erratum 162001900 quirk for HIP08/09
2023-09-23 11:00:03 +02:00
phy
phy: ti: phy-omap-usb2: Fix NULL pointer dereference for SRP
2024-02-23 08:25:06 +01:00
pinctrl
pinctrl: devicetree: fix refcount leak in pinctrl_dt_to_map()
2024-05-17 11:43:48 +02:00
platform
platform/x86: intel_telemetry: Fix kernel doc descriptions
2023-12-20 15:41:21 +01:00
pnp
PNP: ACPI: fix fortify warning
2024-02-23 08:24:54 +01:00
power
power: rt9455: hide unused rt9455_boost_voltage_values
2024-05-17 11:43:48 +02:00
powercap
pps
ps3
ptp
ptp: annotate data-race around q->head and q->tail
2023-11-28 16:50:16 +00:00
pwm
pwm: brcmstb: Utilize appropriate clock APIs in suspend/resume
2023-11-20 10:30:15 +01:00
rapidio
ras
regulator
regulator: pwm-regulator: Add validity checks in continuous .get_voltage
2024-03-01 13:13:34 +01:00
remoteproc
reset
reset: hisilicon: hi6220: fix Wvoid-pointer-to-enum-cast warning
2024-01-25 14:34:20 -08:00
rpmsg
rpmsg: virtio: Free driver_override when rpmsg_remove()
2024-02-23 08:24:48 +01:00
rtc
rtc: mt6397: select IRQ_DOMAIN instead of depending on it
2024-03-26 18:22:24 -04:00
s390
s390/zcrypt: fix reference counting on zcrypt card objects
2024-04-13 12:51:27 +02:00
sbus
scsi
scsi: bnx2fc: Remove spin_lock_bh while releasing resources after upload
2024-05-17 11:43:50 +02:00
sfi
sh
siox
slimbus
slimbus: core: Remove usage of the deprecated ida_simple_xx() API
2024-04-13 12:51:26 +02:00
soc
soc: fsl: qbman: Use raw spinlock for cgr_lock
2024-04-13 12:51:27 +02:00
soundwire
soundwire: stream: fix NULL pointer dereference for multi_link
2023-12-20 15:41:24 +01:00
spi
spi: spi-mt65xx: Fix NULL pointer access in interrupt handler
2024-03-26 18:22:25 -04:00
spmi
ssb
staging
speakup: Avoid crash on very long word
2024-05-02 16:18:32 +02:00
target
scsi: target: core: Add TMF to tmr_list handling
2024-03-01 13:13:33 +01:00
tc
tee
thermal
thermal: core: prevent potential string overflow
2023-11-20 10:30:09 +01:00
thunderbolt
tty
serial: mxs-auart: add spinlock around changing cts state
2024-05-02 16:18:35 +02:00
uio
uio: Fix use-after-free in uio_open
2024-01-25 14:34:21 -08:00
usb
usb: Disable USB3 LPM at shutdown
2024-05-02 16:18:32 +02:00
vfio
vfio/platform: Create persistent IRQ handlers
2024-04-13 12:51:34 +02:00
vhost
vhost: Add smp_rmb() in vhost_vq_avail_empty()
2024-05-02 16:18:29 +02:00
video
fbmon: prevent division by zero in fb_videomode_from_videomode()
2024-04-13 12:51:39 +02:00
virt
virtio
virtio: reenable config if freezing device failed
2024-04-13 12:51:40 +02:00
visorbus
vlynq
vme
w1
watchdog
watchdog: stm32_iwdg: initialize default timeout
2024-03-26 18:22:24 -04:00
xen
xen/events: close evtchn after mapping cleanup
2024-04-13 12:51:29 +02:00
zorro
Kconfig
Makefile