Files
tegra-linux-noble/include/linux
Tejun Heo 57b30ae77b workqueue: reimplement cancel_delayed_work() using try_to_grab_pending()
cancel_delayed_work() can't be called from IRQ handlers due to its use
of del_timer_sync() and can't cancel work items which are already
transferred from timer to worklist.

Also, unlike other flush and cancel functions, a canceled delayed_work
would still point to the last associated cpu_workqueue.  If the
workqueue is destroyed afterwards and the work item is re-used on a
different workqueue, the queueing code can oops trying to dereference
already freed cpu_workqueue.

This patch reimplements cancel_delayed_work() using
try_to_grab_pending() and set_work_cpu_and_clear_pending().  This
allows the function to be called from IRQ handlers and makes its
behavior consistent with other flush / cancel functions.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
2012-08-21 13:18:24 -07:00
..
2012-07-17 15:11:37 -04:00
2012-07-30 18:16:01 -07:00
2012-07-30 18:15:23 -07:00
2012-07-30 17:25:21 -07:00
2012-07-31 18:42:43 -07:00
2012-07-30 17:25:11 -07:00
2012-07-22 23:57:58 +04:00
2012-07-20 11:07:00 -07:00
2012-07-18 08:59:58 -07:00
2012-07-19 10:38:32 -04:00
2012-07-29 21:24:13 +04:00
2012-07-30 19:06:52 -04:00
2012-07-30 19:06:52 -04:00
2012-07-30 19:06:52 -04:00
2012-07-31 18:42:43 -07:00
2012-07-19 10:38:32 -04:00
2012-07-30 17:25:20 -07:00
2012-07-30 17:25:16 -07:00
2012-07-23 00:58:46 -07:00
2012-08-21 16:28:31 +02:00
2012-07-22 23:57:55 +04:00
2012-07-31 08:16:24 -06:00
2012-07-31 18:42:50 -07:00