aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulia Lawall <Julia.Lawall@lip6.fr>2014-03-26 17:33:39 -0400
committerDavid S. Miller <davem@davemloft.net>2014-03-27 15:28:06 -0400
commit0c295e44dea607be5f4cc2d19ce98afbd77e2619 (patch)
treef5a16d78e15cbc8e03c36cd8280471965ef01ac8
parenta0b8486caf4739c09eba651da49efba07c8b6433 (diff)
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>
-rw-r--r--drivers/isdn/act2000/module.c2
-rw-r--r--drivers/isdn/i4l/isdn_common.c2
-rw-r--r--drivers/isdn/sc/init.c4
3 files changed, 4 insertions, 4 deletions
diff --git a/drivers/isdn/act2000/module.c b/drivers/isdn/act2000/module.c
index b4147c0b14b7..c3a1b061838d 100644
--- a/drivers/isdn/act2000/module.c
+++ b/drivers/isdn/act2000/module.c
@@ -796,7 +796,7 @@ static void __exit act2000_exit(void)
796 act2000_card *last; 796 act2000_card *last;
797 while (card) { 797 while (card) {
798 unregister_card(card); 798 unregister_card(card);
799 del_timer(&card->ptimer); 799 del_timer_sync(&card->ptimer);
800 card = card->next; 800 card = card->next;
801 } 801 }
802 card = cards; 802 card = cards;
diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
index 130f21643154..9b856e1890d1 100644
--- a/drivers/isdn/i4l/isdn_common.c
+++ b/drivers/isdn/i4l/isdn_common.c
@@ -2381,7 +2381,7 @@ static void __exit isdn_exit(void)
2381 } 2381 }
2382 isdn_tty_exit(); 2382 isdn_tty_exit();
2383 unregister_chrdev(ISDN_MAJOR, "isdn"); 2383 unregister_chrdev(ISDN_MAJOR, "isdn");
2384 del_timer(&dev->timer); 2384 del_timer_sync(&dev->timer);
2385 /* call vfree with interrupts enabled, else it will hang */ 2385 /* call vfree with interrupts enabled, else it will hang */
2386 vfree(dev); 2386 vfree(dev);
2387 printk(KERN_NOTICE "ISDN-subsystem unloaded\n"); 2387 printk(KERN_NOTICE "ISDN-subsystem unloaded\n");
diff --git a/drivers/isdn/sc/init.c b/drivers/isdn/sc/init.c
index 92acc81f844d..d6f19b168e8a 100644
--- a/drivers/isdn/sc/init.c
+++ b/drivers/isdn/sc/init.c
@@ -390,8 +390,8 @@ static void __exit sc_exit(void)
390 /* 390 /*
391 * kill the timers 391 * kill the timers
392 */ 392 */
393 del_timer(&(sc_adapter[i]->reset_timer)); 393 del_timer_sync(&(sc_adapter[i]->reset_timer));
394 del_timer(&(sc_adapter[i]->stat_timer)); 394 del_timer_sync(&(sc_adapter[i]->stat_timer));
395 395
396 /* 396 /*
397 * Tell I4L we're toast 397 * Tell I4L we're toast