From: syzbot <syzbot+850aaf14624dc0c6d366@syzkaller.appspotmail.com>
To: linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com
Subject: Re: [syzbot] Re: [syzbot] [bpf?] possible deadlock in __bpf_ringbuf_reserve
Date: Fri, 11 Apr 2025 10:26:05 -0700 [thread overview]
Message-ID: <67f950ad.050a0220.2c5fcf.0004.GAE@google.com> (raw)
In-Reply-To: <0000000000004aa700061379547e@google.com>
For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.
***
Subject: Re: [syzbot] [bpf?] possible deadlock in __bpf_ringbuf_reserve
Author: memxor@gmail.com
On Fri, 11 Apr 2025 at 19:19, syzbot
<syzbot+850aaf14624dc0c6d366@syzkaller.appspotmail.com> wrote:
>
> Hello,
>
> syzbot has tested the proposed patch but the reproducer is still triggering an issue:
> possible deadlock in __bpf_ringbuf_reserve
>
> ============================================
> WARNING: possible recursive locking detected
> 6.15.0-rc1-syzkaller-ge618ee89561b #0 Not tainted
> --------------------------------------------
> kworker/2:3/6044 is trying to acquire lock:
> ffffc90006f360d8 (&rb->spinlock){-.-.}-{2:2}, at: __bpf_ringbuf_reserve+0x36e/0x4b0 kernel/bpf/ringbuf.c:423
>
> but task is already holding lock:
> ffffc900070410d8 (&rb->spinlock){-.-.}-{2:2}, at: __bpf_ringbuf_reserve+0x36e/0x4b0 kernel/bpf/ringbuf.c:423
>
> other info that might help us debug this:
> Possible unsafe locking scenario:
>
> CPU0
> ----
> lock(&rb->spinlock);
> lock(&rb->spinlock);
>
> *** DEADLOCK ***
>
> May be due to missing lock nesting notation
>
> 6 locks held by kworker/2:3/6044:
> #0: ffff88801b48ad48 ((wq_completion)rcu_gp){+.+.}-{0:0}, at: process_one_work+0x12a2/0x1b70 kernel/workqueue.c:3213
> #1: ffffc90004c1fd18 ((work_completion)(&(&ssp->srcu_sup->work)->work)){+.+.}-{0:0}, at: process_one_work+0x929/0x1b70 kernel/workqueue.c:3214
> #2: ffff88801ea8f158 (&ssp->srcu_sup->srcu_gp_mutex){+.+.}-{4:4}, at: srcu_advance_state kernel/rcu/srcutree.c:1701 [inline]
> #2: ffff88801ea8f158 (&ssp->srcu_sup->srcu_gp_mutex){+.+.}-{4:4}, at: process_srcu+0x73/0x1920 kernel/rcu/srcutree.c:1861
> #3: ffffffff8e3c15c0 (rcu_read_lock){....}-{1:3}, at: rcu_lock_acquire include/linux/rcupdate.h:331 [inline]
> #3: ffffffff8e3c15c0 (rcu_read_lock){....}-{1:3}, at: rcu_read_lock include/linux/rcupdate.h:841 [inline]
> #3: ffffffff8e3c15c0 (rcu_read_lock){....}-{1:3}, at: __bpf_trace_run kernel/trace/bpf_trace.c:2362 [inline]
> #3: ffffffff8e3c15c0 (rcu_read_lock){....}-{1:3}, at: bpf_trace_run2+0x1b6/0x590 kernel/trace/bpf_trace.c:2404
> #4: ffffc900070410d8 (&rb->spinlock){-.-.}-{2:2}, at: __bpf_ringbuf_reserve+0x36e/0x4b0 kernel/bpf/ringbuf.c:423
> #5: ffffffff8e3c15c0 (rcu_read_lock){....}-{1:3}, at: rcu_lock_acquire include/linux/rcupdate.h:331 [inline]
> #5: ffffffff8e3c15c0 (rcu_read_lock){....}-{1:3}, at: rcu_read_lock include/linux/rcupdate.h:841 [inline]
> #5: ffffffff8e3c15c0 (rcu_read_lock){....}-{1:3}, at: __bpf_trace_run kernel/trace/bpf_trace.c:2362 [inline]
> #5: ffffffff8e3c15c0 (rcu_read_lock){....}-{1:3}, at: bpf_trace_run2+0x1b6/0x590 kernel/trace/bpf_trace.c:2404
>
> stack backtrace:
> CPU: 2 UID: 0 PID: 6044 Comm: kworker/2:3 Not tainted 6.15.0-rc1-syzkaller-ge618ee89561b #0 PREEMPT(full)
> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
> Workqueue: rcu_gp process_srcu
> Call Trace:
> <TASK>
> __dump_stack lib/dump_stack.c:94 [inline]
> dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
> print_deadlock_bug+0x1e9/0x240 kernel/locking/lockdep.c:3042
> check_deadlock kernel/locking/lockdep.c:3094 [inline]
> validate_chain kernel/locking/lockdep.c:3896 [inline]
> __lock_acquire+0xff7/0x1ba0 kernel/locking/lockdep.c:5235
> lock_acquire kernel/locking/lockdep.c:5866 [inline]
> lock_acquire+0x179/0x350 kernel/locking/lockdep.c:5823
> __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
> _raw_spin_lock_irqsave+0x3a/0x60 kernel/locking/spinlock.c:162
> __bpf_ringbuf_reserve+0x36e/0x4b0 kernel/bpf/ringbuf.c:423
> ____bpf_ringbuf_reserve kernel/bpf/ringbuf.c:474 [inline]
> bpf_ringbuf_reserve+0x57/0x90 kernel/bpf/ringbuf.c:466
> bpf_prog_385141c453c15099+0x36/0x5d
> bpf_dispatcher_nop_func include/linux/bpf.h:1316 [inline]
> __bpf_prog_run include/linux/filter.h:718 [inline]
> bpf_prog_run include/linux/filter.h:725 [inline]
> __bpf_trace_run kernel/trace/bpf_trace.c:2363 [inline]
> bpf_trace_run2+0x230/0x590 kernel/trace/bpf_trace.c:2404
> __bpf_trace_contention_begin+0xc9/0x110 include/trace/events/lock.h:95
> __traceiter_contention_begin+0x5a/0xa0 include/trace/events/lock.h:95
> __preempt_count_dec_and_test arch/x86/include/asm/preempt.h:95 [inline]
> class_preempt_notrace_destructor include/linux/preempt.h:482 [inline]
> __do_trace_contention_begin include/trace/events/lock.h:95 [inline]
> trace_contention_begin.constprop.0+0xde/0x160 include/trace/events/lock.h:95
> __pv_queued_spin_lock_slowpath+0x109/0xcf0 kernel/locking/qspinlock.c:219
> pv_queued_spin_lock_slowpath arch/x86/include/asm/paravirt.h:572 [inline]
> queued_spin_lock_slowpath arch/x86/include/asm/qspinlock.h:51 [inline]
> queued_spin_lock include/asm-generic/qspinlock.h:114 [inline]
> do_raw_spin_lock+0x20e/0x2b0 kernel/locking/spinlock_debug.c:116
> __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:111 [inline]
> _raw_spin_lock_irqsave+0x42/0x60 kernel/locking/spinlock.c:162
> __bpf_ringbuf_reserve+0x36e/0x4b0 kernel/bpf/ringbuf.c:423
> ____bpf_ringbuf_reserve kernel/bpf/ringbuf.c:474 [inline]
> bpf_ringbuf_reserve+0x57/0x90 kernel/bpf/ringbuf.c:466
> bpf_prog_385141c453c15099+0x36/0x5d
> bpf_dispatcher_nop_func include/linux/bpf.h:1316 [inline]
> __bpf_prog_run include/linux/filter.h:718 [inline]
> bpf_prog_run include/linux/filter.h:725 [inline]
> __bpf_trace_run kernel/trace/bpf_trace.c:2363 [inline]
> bpf_trace_run2+0x230/0x590 kernel/trace/bpf_trace.c:2404
> __bpf_trace_contention_begin+0xc9/0x110 include/trace/events/lock.h:95
> __traceiter_contention_begin+0x5a/0xa0 include/trace/events/lock.h:95
> __do_trace_contention_begin include/trace/events/lock.h:95 [inline]
> trace_contention_begin+0xc1/0x130 include/trace/events/lock.h:95
> __mutex_lock_common kernel/locking/mutex.c:603 [inline]
> __mutex_lock+0x1a6/0xb90 kernel/locking/mutex.c:746
> srcu_advance_state kernel/rcu/srcutree.c:1701 [inline]
> process_srcu+0x73/0x1920 kernel/rcu/srcutree.c:1861
> process_one_work+0x9cc/0x1b70 kernel/workqueue.c:3238
> process_scheduled_works kernel/workqueue.c:3319 [inline]
> worker_thread+0x6c8/0xf10 kernel/workqueue.c:3400
> kthread+0x3c2/0x780 kernel/kthread.c:464
> ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:153
> ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
> </TASK>
>
>
> Tested on:
>
> commit: e618ee89 Merge tag 'spi-fix-v6.15-rc1' of git://git.ke..
> git tree: upstream
> console output: https://syzkaller.appspot.com/x/log.txt?x=10461c04580000
> kernel config: https://syzkaller.appspot.com/x/.config?x=36c5de4d99134dda
> dashboard link: https://syzkaller.appspot.com/bug?extid=850aaf14624dc0c6d366
> compiler: gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40
>
> Note: no patches were applied.
#syz test: https://github.com/kkdwivedi/linux.git res-lock-next
prev parent reply other threads:[~2025-04-11 17:26 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-12 16:41 [syzbot] [bpf?] possible deadlock in __bpf_ringbuf_reserve syzbot
2024-03-12 21:02 ` Jiri Olsa
2024-03-12 21:18 ` Jiri Olsa
2024-03-12 22:37 ` Andrii Nakryiko
2024-03-13 9:04 ` Jiri Olsa
2024-03-13 12:13 ` Hillf Danton
2024-03-13 10:46 ` Hillf Danton
2024-03-13 11:11 ` syzbot
2025-04-10 12:38 ` Kumar Kartikeya Dwivedi
2025-04-10 12:53 ` syzbot
2025-04-11 17:05 ` [syzbot] Re: [PATCH bpf v1] bpf: Convert ringbuf.c to rqspinlock syzbot
2025-04-11 17:26 ` syzbot [this message]
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=67f950ad.050a0220.2c5fcf.0004.GAE@google.com \
--to=syzbot+850aaf14624dc0c6d366@syzkaller.appspotmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=syzkaller-bugs@googlegroups.com \
/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.