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>
此提交包含在:
Julia Lawall
2014-03-26 22:33:39 +01:00
提交者 David S. Miller
父節點 a0b8486caf
當前提交 0c295e44de
共有 3 個檔案被更改,包括 4 行新增4 行删除

查看文件

@@ -796,7 +796,7 @@ static void __exit act2000_exit(void)
act2000_card *last;
while (card) {
unregister_card(card);
del_timer(&card->ptimer);
del_timer_sync(&card->ptimer);
card = card->next;
}
card = cards;

查看文件

@@ -2381,7 +2381,7 @@ static void __exit isdn_exit(void)
}
isdn_tty_exit();
unregister_chrdev(ISDN_MAJOR, "isdn");
del_timer(&dev->timer);
del_timer_sync(&dev->timer);
/* call vfree with interrupts enabled, else it will hang */
vfree(dev);
printk(KERN_NOTICE "ISDN-subsystem unloaded\n");

查看文件

@@ -390,8 +390,8 @@ static void __exit sc_exit(void)
/*
* kill the timers
*/
del_timer(&(sc_adapter[i]->reset_timer));
del_timer(&(sc_adapter[i]->stat_timer));
del_timer_sync(&(sc_adapter[i]->reset_timer));
del_timer_sync(&(sc_adapter[i]->stat_timer));
/*
* Tell I4L we're toast