Преглед на файлове

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 преди 11 години
родител
ревизия
0c295e44de
променени са 3 файла, в които са добавени 4 реда и са изтрити 4 реда
  1. 1 1
      drivers/isdn/act2000/module.c
  2. 1 1
      drivers/isdn/i4l/isdn_common.c
  3. 2 2
      drivers/isdn/sc/init.c

+ 1 - 1
drivers/isdn/act2000/module.c

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

+ 1 - 1
drivers/isdn/i4l/isdn_common.c

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

+ 2 - 2
drivers/isdn/sc/init.c

@@ -390,8 +390,8 @@ static void __exit sc_exit(void)
 		/*
 		/*
 		 * kill the timers
 		 * 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
 		 * Tell I4L we're toast