mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
A bug exists if the user executes a COUNTER_ADD_WATCH_IOCTL ioctl call,
and then executes a COUNTER_DISABLE_EVENTS_IOCTL ioctl call. Disabling
the events should disable the 104-QUAD-8 interrupts, but because of this
bug the interrupts are not disabling.
The reason this bug is occurring is because quad8_events_configure() is
called when COUNTER_DISABLE_EVENTS_IOCTL is handled, but the
next_irq_trigger[] array has not been cleared before it is checked in
the loop.
This patch fixes the bug by removing the next_irq_trigger array and
instead utilizing a different algorithm of walking the events_list list
for the current requested events. When a COUNTER_DISABLE_EVENTS_IOCTL is
handled, events_list will be empty and thus all device channels end up
with interrupts disabled.
Fixes:
|
||
|---|---|---|
| .. | ||
| 104-quad-8.c | ||
| counter-chrdev.c | ||
| counter-chrdev.h | ||
| counter-core.c | ||
| counter-sysfs.c | ||
| counter-sysfs.h | ||
| ftm-quaddec.c | ||
| intel-qep.c | ||
| interrupt-cnt.c | ||
| Kconfig | ||
| Makefile | ||
| microchip-tcb-capture.c | ||
| stm32-lptimer-cnt.c | ||
| stm32-timer-cnt.c | ||
| ti-eqep.c | ||