All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anna-Maria Behnsen <anna-maria@linutronix.de>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Linus Torvalds <torvalds@linuxfoundation.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Stephen Boyd <sboyd@kernel.org>,
	Guenter Roeck <linux@roeck-us.net>,
	Andrew Morton <akpm@linux-foundation.org>,
	Julia Lawall <Julia.Lawall@inria.fr>,
	Arnd Bergmann <arnd@arndb.de>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	Marc Zyngier <maz@kernel.org>,
	Marcel Holtmann <marcel@holtmann.org>,
	Johan Hedberg <johan.hedberg@gmail.com>,
	Luiz Augusto von Dentz <luiz.dentz@gmail.com>,
	linux-bluetooth@vger.kernel.org,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	netdev@vger.kernel.org, Jacob Keller <jacob.e.keller@intel.com>
Subject: Re: [patch V3 12/17] timers: Silently ignore timers with a NULL function
Date: Thu, 24 Nov 2022 08:37:27 +0100 (CET)	[thread overview]
Message-ID: <644695b9-f343-7fb7-ed8e-763e5fe3d158@linutronix.de> (raw)
In-Reply-To: <20221123201625.135055320@linutronix.de>

On Wed, 23 Nov 2022, Thomas Gleixner wrote:

> 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.
> 
> In preparation for that replace the warnings in the relevant code paths
> with checks for timer->function == NULL. If the pointer is NULLL, then

s/NULLL/NULL

> discard the rearm request silently.
> 
> Add debug_assert_init() instead of the WARN_ON_ONCE(!timer->function)
> checks so that debug objects can warn about non-initialized timers.
> 
> The warning of debug objects does warn if timer->function == NULL.  It

does NOT warn

> warns when timer was not initialized using timer_setup[_on_stack]() or via
> DEFINE_TIMER(). If developers fail to enable debug objects and then waste
> lots of time to figure out why their non-initialized timer is not firing,
> they deserve it. Same for initializing a timer with a NULL function.
> 
> 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>
> Link: https://lore.kernel.org/all/20220407161745.7d6754b3@gandalf.local.home
> Link: https://lore.kernel.org/all/20221110064101.429013735@goodmis.org
> ---
> V2: Use continue instead of return and amend the return value docs (Steven)
> V3: Changelog and comment updates (Anna-Maria)
> ---
>  kernel/time/timer.c |   57 +++++++++++++++++++++++++++++++++++++++++++++++-----
>  1 file changed, 52 insertions(+), 5 deletions(-)
> 
> --- a/kernel/time/timer.c
> +++ b/kernel/time/timer.c
> @@ -1128,8 +1144,12 @@ static inline int
>   * mod_timer_pending() is the same for pending timers as mod_timer(), but
>   * will not activate inactive timers.
>   *
> + * If @timer->function == NULL then the start operation is silently
> + * discarded.
> + *
>   * Return:
> - * * %0 - The timer was inactive and not modified
> + * * %0 - The timer was inactive and not modified or was is in
> + *	  shutdown state and the operation was discarded

You forgot to update this "was is" mistake. All other places are fine.

>   * * %1 - The timer was active and requeued to expire at @expires
>   */
>  int mod_timer_pending(struct timer_list *timer, unsigned long expires)

Thanks,

	Anna-Maria


  reply	other threads:[~2022-11-24  7:37 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-23 20:18 [patch V3 00/17] timers: Provide timer_shutdown[_sync]() Thomas Gleixner
2022-11-23 20:18 ` [patch V3 01/17] Documentation: Remove bogus claim about del_timer_sync() Thomas Gleixner
2022-11-23 20:59   ` timers: Provide timer_shutdown[_sync]() bluez.test.bot
2022-11-24 14:16   ` [tip: timers/core] Documentation: Remove bogus claim about del_timer_sync() tip-bot2 for Thomas Gleixner
2022-11-23 20:18 ` [patch V3 02/17] ARM: spear: Do not use timer namespace for timer_shutdown() function Thomas Gleixner
2022-11-23 20:18 ` [patch V3 03/17] clocksource/drivers/arm_arch_timer: " Thomas Gleixner
2022-11-23 20:18 ` [patch V3 04/17] clocksource/drivers/sp804: " Thomas Gleixner
2022-11-23 20:18 ` [patch V3 05/17] timers: Get rid of del_singleshot_timer_sync() Thomas Gleixner
2022-11-24 14:16   ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
2022-11-23 20:18 ` [patch V3 06/17] timers: Replace BUG_ON()s Thomas Gleixner
2022-11-24 14:16   ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
2022-11-23 20:18 ` [patch V3 07/17] timers: Update kernel-doc for various functions Thomas Gleixner
2022-11-24 14:16   ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
2022-11-23 20:18 ` [patch V3 08/17] timers: Use del_timer_sync() even on UP Thomas Gleixner
2022-11-23 20:18 ` [patch V3 09/17] timers: Rename del_timer_sync() to timer_delete_sync() Thomas Gleixner
2022-11-24 14:16   ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
2022-11-23 20:18 ` [patch V3 10/17] timers: Rename del_timer() to timer_delete() Thomas Gleixner
2022-11-24 14:16   ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
2022-11-23 20:18 ` [patch V3 11/17] Documentation: Replace del_timer/del_timer_sync() Thomas Gleixner
2022-11-24 14:16   ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
2022-11-23 20:18 ` [patch V3 12/17] timers: Silently ignore timers with a NULL function Thomas Gleixner
2022-11-24  7:37   ` Anna-Maria Behnsen [this message]
2022-11-24  8:18     ` Thomas Gleixner
2022-11-24  8:22       ` [patch V3.1 " Thomas Gleixner
2022-11-24  8:44         ` [V3.1,12/17] " bluez.test.bot
2022-11-23 20:18 ` [patch V3 13/17] timers: Split [try_to_]del_timer[_sync]() to prepare for shutdown mode Thomas Gleixner
2022-11-23 20:18 ` [patch V3 14/17] timers: Add shutdown mechanism to the internal functions Thomas Gleixner
2022-11-24 13:48   ` Anna-Maria Behnsen
2022-11-23 20:18 ` [patch V3 15/17] timers: Provide timer_shutdown[_sync]() Thomas Gleixner
2022-11-23 20:18 ` [patch V3 16/17] timers: Update the documentation to reflect on the new timer_shutdown() API Thomas Gleixner
2022-11-23 20:18 ` [patch V3 17/17] Bluetooth: hci_qca: Fix the teardown problem for real Thomas Gleixner
2022-11-24 13:56   ` Anna-Maria Behnsen
2022-11-24 14:00 ` [patch V3 00/17] timers: Provide timer_shutdown[_sync]() Anna-Maria Behnsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=644695b9-f343-7fb7-ed8e-763e5fe3d158@linutronix.de \
    --to=anna-maria@linutronix.de \
    --cc=Julia.Lawall@inria.fr \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=jacob.e.keller@intel.com \
    --cc=johan.hedberg@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=luiz.dentz@gmail.com \
    --cc=marcel@holtmann.org \
    --cc=maz@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=sboyd@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linuxfoundation.org \
    --cc=viresh.kumar@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.