linux/drivers/comedi
Ian Abbott f53641a6e8 comedi: comedi_test: Prevent timers rescheduling during deletion
The comedi_test devices have a couple of timers (ai_timer and ao_timer)
that can be started to simulate hardware interrupts.  Their expiry
functions normally reschedule the timer.  The driver code calls either
del_timer_sync() or del_timer() to delete the timers from the queue, but
does not currently prevent the timers from rescheduling themselves so
synchronized deletion may be ineffective.

Add a couple of boolean members (one for each timer: ai_timer_enable and
ao_timer_enable) to the device private data structure to indicate
whether the timers are allowed to reschedule themselves.  Set the member
to true when adding the timer to the queue, and to false when deleting
the timer from the queue in the waveform_ai_cancel() and
waveform_ao_cancel() functions.

The del_timer_sync() function is also called from the waveform_detach()
function, but the timer enable members will already be set to false when
that function is called, so no change is needed there.

Fixes: 403fe7f34e ("staging: comedi: comedi_test: fix timer race conditions")
Cc: stable@vger.kernel.org # 4.4+
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Link: https://lore.kernel.org/r/20240214100747.16203-1-abbotti@mev.co.uk
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-03-05 14:21:45 +00:00
..
drivers comedi: comedi_test: Prevent timers rescheduling during deletion 2024-03-05 14:21:45 +00:00
kcomedilib comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
comedi_buf.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
comedi_fops.c drivers/comedi: use standard array-copy-function 2023-12-07 11:08:45 +09:00
comedi_internal.h
comedi_pci.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
comedi_pcmcia.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
comedi_usb.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
drivers.c comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() 2023-10-05 13:34:04 +02:00
Kconfig comedi: add HAS_IOPORT dependencies again 2023-10-05 13:34:05 +02:00
Makefile
proc.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
range.c comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
TODO