cancel_work_sync — cancel a work and wait for it to finish
| bool cancel_work_sync ( | struct work_struct * work ); | 
   Cancel work and wait for its execution to finish.  This function
   can be used even if the work re-queues itself or migrates to
   another workqueue.  On return from this function, work is
   guaranteed to be not pending or executing on any CPU.
   
   cancel_work_sync(delayed_work->work) must not be used for
   delayed_work's.  Use cancel_delayed_work_sync instead.
   
   The caller must ensure that the workqueue on which work was last
   queued can't be destroyed before this function returns.