public inbox for bpf@vger.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: Alexei Starovoitov <alexei.starovoitov@gmail.com>,
	Peter Ziljstra <peterz@infradead.org>
Cc: Andrii Nakryiko <andrii@kernel.org>, bpf <bpf@vger.kernel.org>,
	Sebastian Sewior <bigeasy@linutronix.de>,
	Steven Rostedt <rostedt@goodmis.org>,
	Jiri Olsa <jolsa@kernel.org>,
	Masami Hiramatsu <mhiramat@kernel.org>
Subject: Re: uprobe splat in PREEMP_RT
Date: Wed, 2 Apr 2025 11:10:45 +0200	[thread overview]
Message-ID: <20250402091044.GB22091@redhat.com> (raw)
In-Reply-To: <CAADnVQLLOHZmPO4X_dQ+cTaSDvzdWHzA0qUqQDhLFYL3D6xPxg@mail.gmail.com>

Add Peter.

I never understood why __seqprop_preemptible() returns false.
Stupid question, perhaps

	--- x/include/linux/seqlock.h
	+++ x/include/linux/seqlock.h
	@@ -213,12 +213,11 @@ static inline unsigned __seqprop_sequenc
	 
	 static inline bool __seqprop_preemptible(const seqcount_t *s)
	 {
	-	return false;
	+	return true;
	 }
	 
	 static inline void __seqprop_assert(const seqcount_t *s)
	 {
	-	lockdep_assert_preemption_disabled();
	 }
	 
	 #define __SEQ_RT	IS_ENABLED(CONFIG_PREEMPT_RT)

makes more sense?

Then we can remove the no longer necessary preempt_disable()'s
before write_seqcount_begin() in other users of seqcount_t.

Oleg.

On 04/01, Alexei Starovoitov wrote:
>
> Hi,
>
> caught the following splat running uprobe tests in PREEMPT_RT
>
> [  101.862206] ------------[ cut here ]------------
> [  101.862212] WARNING: CPU: 0 PID: 16 at include/linux/seqlock.h:221
> ri_timer+0x235/0x320
> [  101.862226] Modules linked in:
> [  101.862233] CPU: 0 UID: 0 PID: 16 Comm: ktimers/0 Not tainted
> 6.14.0-12141-g1d0ec9988088 #22 PREEMPT_RT
> [  101.862240] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
> BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
> [  101.862243] RIP: 0010:ri_timer+0x235/0x320
> [  101.862249] Code: 5d 41 5e 41 5f e9 5b f5 b7 ff 65 f7 05 a8 95 ff
> 04 ff ff ff 7f 0f 85 ad fe ff ff 65 8b 05 57 cf ff 04 85 c0 0f 84 9e
> fe ff ff <0f> 0b e9 97 fe ff ff e8 df 7b b8 ff 84 c0 0f 85 43 fe ff ff
> e8 52
> [  101.862253] RSP: 0018:ffffc9000010fb80 EFLAGS: 00010202
> [  101.862257] RAX: 0000000000000001 RBX: ffffffff819c8889 RCX: 0000000000000001
> [  101.862260] RDX: 0000000000000000 RSI: ffffffff819c8889 RDI: ffff8881f6a33910
> [  101.862262] RBP: ffff888105a1da18 R08: 000000000000000a R09: 000000000000000a
> [  101.862265] R10: ffffc9000010f987 R11: 0000000000000000 R12: 1ffff92000021f78
> [  101.862267] R13: 0000000000000000 R14: ffffffff819c8860 R15: 0000000000000000
> [  101.862292] FS:  0000000000000000(0000) GS:ffff88827005e000(0000)
> knlGS:0000000000000000
> [  101.862316] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [  101.862319] CR2: 00007fffffffe000 CR3: 0000000109d67004 CR4: 00000000003706f0
> [  101.862322] Call Trace:
> [  101.862325]  <TASK>
> [  101.862333]  ? free_ret_instance+0x180/0x180
> [  101.862338]  call_timer_fn+0x14c/0x3c0
> [  101.862345]  ? lock_release+0xb6/0x250
> [  101.862353]  ? detach_if_pending+0x310/0x310
> [  101.862363]  ? _raw_spin_unlock_irq+0x28/0x40
> [  101.862371]  ? lockdep_hardirqs_on_prepare+0xa7/0x170
> [  101.862380]  __run_timers+0x58a/0x980
> [  101.862385]  ? free_ret_instance+0x180/0x180
> [  101.862396]  ? timer_shutdown_sync+0x20/0x20
> [  101.862402]  ? lock_acquire+0x123/0x2b0
> [  101.862408]  ? run_timer_softirq+0x11a/0x220
> [  101.862414]  ? do_raw_spin_lock+0x11e/0x240
> [  101.862419]  ? spin_bug+0x230/0x230
> [  101.862422]  ? rtlock_slowlock_locked+0x50a0/0x50a0
> [  101.862433]  run_timer_softirq+0x122/0x220
> [  101.862503]  handle_softirqs.isra.0+0x136/0x610
> [  101.862518]  run_ktimerd+0x47/0xe0
> [  101.862524]  smpboot_thread_fn+0x30f/0x8a0
> [  101.862531]  ? schedule+0xe2/0x390
> [  101.862537]  ? sort_range+0x20/0x20
> [  101.862541]  kthread+0x3ac/0x770
> [  101.862547]  ? rt_read_trylock+0x1d0/0x1d0
> [  101.862554]  ? kthread_is_per_cpu+0xc0/0xc0
> [  101.862560]  ? lock_release+0xb6/0x250
> [  101.862570]  ? kthread_is_per_cpu+0xc0/0xc0
> [  101.862574]  ret_from_fork+0x31/0x70
> [  101.862580]  ? kthread_is_per_cpu+0xc0/0xc0
> [  101.862586]  ret_from_fork_asm+0x11/0x20
> [  101.862604]  </TASK>
> [  101.862606] irq event stamp: 13032
> [  101.862608] hardirqs last  enabled at (13034): [<ffffffff8150094a>]
> vprintk_store+0x72a/0x850
> [  101.862613] hardirqs last disabled at (13035): [<ffffffff8150061d>]
> vprintk_store+0x3fd/0x850
> [  101.862615] softirqs last  enabled at (12922): [<ffffffff8136e049>]
> run_ktimerd+0x69/0xe0
> [  101.862618] softirqs last disabled at (12928): [<ffffffff813ef4bf>]
> smpboot_thread_fn+0x30f/0x8a0
> [  101.862621] ---[ end trace 0000000000000000 ]---
>
> Looks like write_seqcount_begin(&utask->ri_seqcount);
> use in ri_timer() needs a fix ?
>


  parent reply	other threads:[~2025-04-02  9:11 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-01 21:04 uprobe splat in PREEMP_RT Alexei Starovoitov
2025-04-01 21:22 ` Steven Rostedt
2025-04-01 22:01   ` Andrii Nakryiko
2025-04-02 10:33     ` Oleg Nesterov
2025-04-02 10:57       ` Sebastian Sewior
2025-04-02 11:23         ` Oleg Nesterov
2025-04-02 12:13           ` Sebastian Sewior
2025-04-02 12:18             ` Oleg Nesterov
2025-04-02 12:24               ` Sebastian Sewior
2025-04-02 14:12                 ` Oleg Nesterov
2025-04-03  7:37                   ` Sebastian Sewior
2025-04-03 12:27                     ` Oleg Nesterov
2025-04-03 16:04                       ` Andrii Nakryiko
2025-04-02 16:15       ` Andrii Nakryiko
2025-04-02 16:57         ` Oleg Nesterov
2025-04-02 12:21     ` Sebastian Sewior
2025-04-02  9:10 ` Oleg Nesterov [this message]
2025-04-02 10:54   ` Sebastian Sewior
2025-04-02 11:20     ` Oleg Nesterov
2025-04-02 11:31       ` Oleg Nesterov
2025-04-02 12:06         ` Sebastian Sewior
2025-04-02 12:12           ` Oleg Nesterov
2025-04-02 12:16             ` Sebastian Sewior
2025-04-02 13:56               ` Oleg Nesterov
2025-04-02 14:23                 ` Oleg Nesterov
2025-04-03  9:08                   ` Sebastian Sewior
2025-04-03 12:11                     ` Oleg Nesterov
2025-04-03 12:43                       ` Oleg Nesterov

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=20250402091044.GB22091@redhat.com \
    --to=oleg@redhat.com \
    --cc=alexei.starovoitov@gmail.com \
    --cc=andrii@kernel.org \
    --cc=bigeasy@linutronix.de \
    --cc=bpf@vger.kernel.org \
    --cc=jolsa@kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox