linux/drivers/counter
Alexander Sverdlin 425886b1f8 counter: interrupt-cnt: Drop IRQF_NO_THREAD flag
commit 23f9485510 upstream.

An IRQ handler can either be IRQF_NO_THREAD or acquire spinlock_t, as
CONFIG_PROVE_RAW_LOCK_NESTING warns:
=============================
[ BUG: Invalid wait context ]
6.18.0-rc1+git... #1
-----------------------------
some-user-space-process/1251 is trying to lock:
(&counter->events_list_lock){....}-{3:3}, at: counter_push_event [counter]
other info that might help us debug this:
context-{2:2}
no locks held by some-user-space-process/....
stack backtrace:
CPU: 0 UID: 0 PID: 1251 Comm: some-user-space-process 6.18.0-rc1+git... #1 PREEMPT
Call trace:
 show_stack (C)
 dump_stack_lvl
 dump_stack
 __lock_acquire
 lock_acquire
 _raw_spin_lock_irqsave
 counter_push_event [counter]
 interrupt_cnt_isr [interrupt_cnt]
 __handle_irq_event_percpu
 handle_irq_event
 handle_simple_irq
 handle_irq_desc
 generic_handle_domain_irq
 gpio_irq_handler
 handle_irq_desc
 generic_handle_domain_irq
 gic_handle_irq
 call_on_irq_stack
 do_interrupt_handler
 el0_interrupt
 __el0_irq_handler_common
 el0t_64_irq_handler
 el0t_64_irq

... and Sebastian correctly points out. Remove IRQF_NO_THREAD as an
alternative to switching to raw_spinlock_t, because the latter would limit
all potential nested locks to raw_spinlock_t only.

Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20251117151314.xwLAZrWY@linutronix.de/
Fixes: a55ebd47f2 ("counter: add IRQ or GPIO based counter")
Signed-off-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Reviewed-by: Oleksij Rempel <o.rempel@pengutronix.de>
Link: https://lore.kernel.org/r/20251118083603.778626-1-alexander.sverdlin@siemens.com
Signed-off-by: William Breathitt Gray <wbg@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-01-17 16:35:12 +01:00
..
104-quad-8.c counter: 104-quad-8: Fix incorrect return value in IRQ handler 2026-01-17 16:35:12 +01:00
counter-chrdev.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
counter-chrdev.h counter: Add character device interface 2021-10-17 10:53:52 +01:00
counter-core.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
counter-sysfs.c counter: i8254: Introduce the Intel 8254 interface library module 2023-06-08 10:11:17 -04:00
counter-sysfs.h counter: Internalize sysfs interface code 2021-10-17 10:52:58 +01:00
ftm-quaddec.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
i8254.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
intel-qep.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
interrupt-cnt.c counter: interrupt-cnt: Drop IRQF_NO_THREAD flag 2026-01-17 16:35:12 +01:00
Kconfig counter: ti-eqep: Allow eQEP driver to be built for K3 devices 2024-07-01 19:05:42 +09:00
Makefile counter: i8254: Introduce the Intel 8254 interface library module 2023-06-08 10:11:17 -04:00
microchip-tcb-capture.c counter: microchip-tcb-capture: Allow shared IRQ for multi-channel TCBs 2025-10-13 14:56:30 +09:00
rz-mtu3-cnt.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
stm32-lptimer-cnt.c counter: stm32-lptimer-cnt: fix error handling when enabling 2025-03-04 19:23:02 +09:00
stm32-timer-cnt.c counter: stm32-timer-cnt: add support for stm32mp25 2025-05-15 09:20:12 +09:00
ti-ecap-capture.c counter: ti-ecap-capture: Use devm_pm_runtime_enable() 2025-08-24 17:02:03 +09:00
ti-eqep.c counter: ti-eqep: add direction support 2025-02-05 13:22:04 +09:00