Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

isdn: replace del_timer by del_timer_sync

Use del_timer_sync to ensure that the timer is stopped on all CPUs before
the driver exists.

This change was suggested by Thomas Gleixner.

The semantic patch that makes this change is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@r@
declarer name module_exit;
identifier ex;
@@

module_exit(ex);

@@
identifier r.ex;
@@

ex(...) {
<...
- del_timer
+ del_timer_sync
(...)
...>
}
// </smpl>

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Julia Lawall and committed by
David S. Miller
0c295e44 a0b8486c

+4 -4
+1 -1
drivers/isdn/act2000/module.c
··· 796 796 act2000_card *last; 797 797 while (card) { 798 798 unregister_card(card); 799 - del_timer(&card->ptimer); 799 + del_timer_sync(&card->ptimer); 800 800 card = card->next; 801 801 } 802 802 card = cards;
+1 -1
drivers/isdn/i4l/isdn_common.c
··· 2381 2381 } 2382 2382 isdn_tty_exit(); 2383 2383 unregister_chrdev(ISDN_MAJOR, "isdn"); 2384 - del_timer(&dev->timer); 2384 + del_timer_sync(&dev->timer); 2385 2385 /* call vfree with interrupts enabled, else it will hang */ 2386 2386 vfree(dev); 2387 2387 printk(KERN_NOTICE "ISDN-subsystem unloaded\n");
+2 -2
drivers/isdn/sc/init.c
··· 390 390 /* 391 391 * kill the timers 392 392 */ 393 - del_timer(&(sc_adapter[i]->reset_timer)); 394 - del_timer(&(sc_adapter[i]->stat_timer)); 393 + del_timer_sync(&(sc_adapter[i]->reset_timer)); 394 + del_timer_sync(&(sc_adapter[i]->stat_timer)); 395 395 396 396 /* 397 397 * Tell I4L we're toast