All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <frederic@kernel.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Anna-Maria Behnsen <anna-maria@linutronix.de>,
	Benjamin Segall <bsegall@google.com>,
	Eric Dumazet <edumazet@google.com>,
	Andrey Vagin <avagin@openvz.org>,
	Pavel Tikhomirov <ptikhomirov@virtuozzo.com>,
	Peter Zijlstra <peterz@infradead.org>
Subject: Re: [patch V2 08/17] posix-timers: Rework timer removal
Date: Sat, 8 Mar 2025 23:48:34 +0100	[thread overview]
Message-ID: <Z8zJQtzLIliTNe2e@pavilion.home> (raw)
In-Reply-To: <8734fn53b5.ffs@tglx>

Le Sat, Mar 08, 2025 at 09:34:06AM +0100, Thomas Gleixner a écrit :
> On Sat, Mar 08 2025 at 00:03, Frederic Weisbecker wrote:
> > Le Sun, Mar 02, 2025 at 08:36:56PM +0100, Thomas Gleixner a écrit :
> >> --- a/include/linux/posix-timers.h
> >> +++ b/include/linux/posix-timers.h
> >> @@ -240,6 +240,13 @@ static inline void posixtimer_sigqueue_p
> >>  
> >>  	posixtimer_putref(tmr);
> >>  }
> >> +
> >> +static inline bool posixtimer_valid(const struct k_itimer *timer)
> >> +{
> >> +	unsigned long val = (unsigned long)timer->it_signal;
> >> +
> >> +	return !(val & 0x1UL);
> >> +}
> >>  #else  /* CONFIG_POSIX_TIMERS */
> >>  static inline void posixtimer_sigqueue_getref(struct sigqueue *q) { }
> >>  static inline void posixtimer_sigqueue_putref(struct sigqueue *q) { }
> >> --- a/kernel/signal.c
> >> +++ b/kernel/signal.c
> >> @@ -2092,7 +2092,7 @@ static inline void posixtimer_sig_ignore
> >>  	 * from a non-periodic timer, then just drop the reference
> >>  	 * count. Otherwise queue it on the ignored list.
> >>  	 */
> >> -	if (tmr->it_signal && tmr->it_sig_periodic)
> >> +	if (posixtimer_valid(tmr) && tmr->it_sig_periodic)
> >>  		hlist_add_head(&tmr->ignored_list, &tsk->signal->ignored_posix_timers);
> >>  	else
> >>  		posixtimer_putref(tmr);
> >> --- a/kernel/time/posix-timers.c
> >> +++ b/kernel/time/posix-timers.c
> >> @@ -279,7 +279,7 @@ static bool __posixtimer_deliver_signal(
> >>  	 * since the signal was queued. In either case, don't rearm and
> >>  	 * drop the signal.
> >>  	 */
> >> -	if (timr->it_signal_seq != timr->it_sigqueue_seq || WARN_ON_ONCE(!timr->it_signal))
> >> +	if (timr->it_signal_seq != timr->it_sigqueue_seq || !posixtimer_valid(timr))
> >
> > Hmm, should it still warn here? ie: WARN_ON_ONCE(!posixtimer_valid(timr)) ?
> 
> No, because the timer is invalidated early now.

But the signal can only be queued before posix_timer_delete(). So
if the bit 0 of it_signal has been reset, it_signal_seq must have been
incremented along, right?

And if so then timr->it_signal_seq == timr->it_sigqueue_seq must imply
posixtimer_valid(). And if not we should warn. Or am I missing something?

Thanks.


> 
> Thanks,
> 
>         tglx

  reply	other threads:[~2025-03-08 22:48 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-02 19:36 [patch V2 00/17] posix-timers: Rework the global hash table and provide a sane mechanism for CRIU Thomas Gleixner
2025-03-02 19:36 ` [patch V2 01/17] posix-timers: Initialise timer before adding it to the hash table Thomas Gleixner
2025-03-05 17:25   ` Frederic Weisbecker
2025-03-06  8:10     ` Thomas Gleixner
2025-03-06  8:47       ` Frederic Weisbecker
2025-03-07 13:46   ` Frederic Weisbecker
2025-03-02 19:36 ` [patch V2 02/17] posix-timers: Add cond_resched() to posix_timer_add() search loop Thomas Gleixner
2025-03-05 20:54   ` Frederic Weisbecker
2025-03-02 19:36 ` [patch V2 03/17] posix-timers: Cleanup includes Thomas Gleixner
2025-03-05 20:57   ` Frederic Weisbecker
2025-03-02 19:36 ` [patch V2 04/17] posix-timers: Remove a few paranoid warnings Thomas Gleixner
2025-03-05 22:11   ` Frederic Weisbecker
2025-03-02 19:36 ` [patch V2 05/17] posix-timers: Remove SLAB_PANIC from kmem cache Thomas Gleixner
2025-03-07 14:05   ` Frederic Weisbecker
2025-03-02 19:36 ` [patch V2 06/17] posix-timers: Use guards in a few places Thomas Gleixner
2025-03-07 14:16   ` Frederic Weisbecker
2025-03-02 19:36 ` [patch V2 07/17] posix-timers: Simplify lock/unlock_timer() Thomas Gleixner
2025-03-07 22:16   ` Frederic Weisbecker
2025-03-02 19:36 ` [patch V2 08/17] posix-timers: Rework timer removal Thomas Gleixner
2025-03-04 10:10   ` Pavel Tikhomirov
2025-03-04 10:20     ` Pavel Tikhomirov
2025-03-04 14:06       ` Thomas Gleixner
2025-03-07 23:03   ` Frederic Weisbecker
2025-03-08  8:34     ` Thomas Gleixner
2025-03-08 22:48       ` Frederic Weisbecker [this message]
2025-03-09  8:21         ` Thomas Gleixner
2025-03-02 19:36 ` [patch V2 09/17] posix-timers: Make lock_timer() use guard() Thomas Gleixner
2025-03-04 14:08   ` [patch V2a " Thomas Gleixner
2025-03-02 19:36 ` [patch V2 10/17] posix-timers: Make signal_struct::next_posix_timer_id an atomic_t Thomas Gleixner
2025-03-03 20:21   ` Cyrill Gorcunov
2025-03-03 21:24     ` Thomas Gleixner
2025-03-04 17:56       ` Cyrill Gorcunov
2025-03-04 20:30         ` Thomas Gleixner
2025-03-04 22:16           ` Cyrill Gorcunov
2025-03-05  7:31             ` Thomas Gleixner
2025-03-05  8:28               ` Cyrill Gorcunov
2025-03-02 19:37 ` [patch V2 11/17] posix-timers: Improve hash table performance Thomas Gleixner
2025-03-02 19:37 ` [patch V2 12/17] posix-timers: Switch to jhash32() Thomas Gleixner
2025-03-02 19:37 ` [patch V2 13/17] posix-timers: Avoid false cacheline sharing Thomas Gleixner
2025-03-02 19:37 ` [patch V2 14/17] posix-timers: Make per process list RCU safe Thomas Gleixner
2025-03-02 19:37 ` [patch V2 15/17] posix-timers: Dont iterate /proc/$PID/timers with sighand::siglock held Thomas Gleixner
2025-03-02 19:37 ` [patch V2 16/17] posix-timers: Provide a mechanism to allocate a given timer ID Thomas Gleixner
2025-03-02 19:37 ` [patch V2 17/17] selftests/timers/posix-timers: Add a test for exact allocation mode Thomas Gleixner

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=Z8zJQtzLIliTNe2e@pavilion.home \
    --to=frederic@kernel.org \
    --cc=anna-maria@linutronix.de \
    --cc=avagin@openvz.org \
    --cc=bsegall@google.com \
    --cc=edumazet@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=ptikhomirov@virtuozzo.com \
    --cc=tglx@linutronix.de \
    /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.