timers: Split [try_to_]del_timer[_sync]() to prepare for shutdown mode
authorThomas Gleixner <tglx@linutronix.de>
Wed, 23 Nov 2022 20:18:50 +0000 (21:18 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 24 Nov 2022 14:09:12 +0000 (15:09 +0100)
commit8553b5f2774a66b1f293b7d783934210afb8f23c
tree7da61b23655c67fb613a5168b552723169d9df5d
parentd02e382cef06cc73561dd32dfdc171c00dcc416d
timers: Split [try_to_]del_timer[_sync]() to prepare for shutdown mode

Tearing down timers which have circular dependencies to other
functionality, e.g. workqueues, where the timer can schedule work and work
can arm timers, is not trivial.

In those cases it is desired to shutdown the timer in a way which prevents
rearming of the timer. The mechanism to do so is to set timer->function to
NULL and use this as an indicator for the timer arming functions to ignore
the (re)arm request.

Split the inner workings of try_do_del_timer_sync(), del_timer_sync() and
del_timer() into helper functions to prepare for implementing the shutdown
functionality.

No functional change.

Co-developed-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
Link: https://lore.kernel.org/all/20220407161745.7d6754b3@gandalf.local.home
Link: https://lore.kernel.org/all/20221110064101.429013735@goodmis.org
Link: https://lore.kernel.org/r/20221123201625.195147423@linutronix.de
kernel/time/timer.c