]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
staging: speakup: Replace del_timer with del_timer_sync
authorAmitoj Kaur Chawla <amitoj1606@gmail.com>
Sun, 6 Mar 2016 01:15:07 +0000 (06:45 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 12 Mar 2016 06:09:09 +0000 (22:09 -0800)
Use del_timer_sync to ensure timer is stopped on all CPUs before
the driver exists and the timer should not run when the module is
being removed. Since the timer is not called from an interrupt
context, this change is safe and will not cause deadlock.

The Coccinelle semantic patch used to make this change is as
follows:
// <smpl>
@r@
declarer name module_exit;
identifier ex;
@@

module_exit(ex);

@@
identifier r.ex;
@@

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

Signed-off-by: Amitoj Kaur Chawla <amitoj1606@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/speakup/main.c

index a87224c5510b2c3d00c399562852574ac6e7b56c..a22fb07512a12959b4448ff227269e3e3783b4d3 100644 (file)
@@ -2274,7 +2274,7 @@ static void __exit speakup_exit(void)
        unregister_vt_notifier(&vt_notifier_block);
        speakup_unregister_devsynth();
        speakup_cancel_paste();
-       del_timer(&cursor_timer);
+       del_timer_sync(&cursor_timer);
        kthread_stop(speakup_task);
        speakup_task = NULL;
        mutex_lock(&spk_mutex);