comedi: jr3_pci: Fix synchronous deletion of timer
authorIan Abbott <abbotti@mev.co.uk>
Tue, 15 Apr 2025 12:39:01 +0000 (13:39 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 15 Apr 2025 13:18:55 +0000 (15:18 +0200)
When `jr3_pci_detach()` is called during device removal, it calls
`timer_delete_sync()` to stop the timer, but the timer expiry function
always reschedules the timer, so the synchronization is ineffective.

Call `timer_shutdown_sync()` instead.  It does not matter that the timer
expiry function pointer is cleared, because the device is being removed.

Fixes: 07b509e6584a5 ("Staging: comedi: add jr3_pci driver")
Cc: stable <stable@kernel.org>
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Link: https://lore.kernel.org/r/20250415123901.13483-1-abbotti@mev.co.uk
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/comedi/drivers/jr3_pci.c

index cdc842b32babb42a30ee0bbd36a48d9b00a7c522..75dce1ff24193b00d82d060b50ea277bb4391a35 100644 (file)
@@ -758,7 +758,7 @@ static void jr3_pci_detach(struct comedi_device *dev)
        struct jr3_pci_dev_private *devpriv = dev->private;
 
        if (devpriv)
-               timer_delete_sync(&devpriv->timer);
+               timer_shutdown_sync(&devpriv->timer);
 
        comedi_pci_detach(dev);
 }