From: sashiko-bot@kernel.org
To: "Vincent Donnefort" <vdonnefort@google.com>
Cc: linux-trace-kernel@vger.kernel.org
Subject: Re: [PATCH v6 10/18] ring-buffer: Use panic-friendly locking in ring_buffer_iter interface
Date: Mon, 17 Aug 2026 14:04:53 +0000 [thread overview]
Message-ID: <20260817140454.231C71F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260817135517.3919534-11-vdonnefort@google.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Incomplete panic-friendly locking leaves the system vulnerable to deadlocks during non-NMI panics.
--
--- Patch [10]: [PATCH v6 10/18] ring-buffer: Use panic-friendly locking in ring_buffer_iter interface ---
commit ecd8a71adf986114125493b0d7821b40d48b7d2e
Author: Vincent Donnefort <vdonnefort@google.com>
ring-buffer: Use panic-friendly locking in ring_buffer_iter interface
This commit replaces raw_spin_lock_irqsave with rb_reader_lock in the
ring_buffer_iter functions. This prepares the iterator interface for dumping
the buffer on panic without deadlocking on the reader_lock.
> diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
> index a7d9936b4c835..a6f2293f409b8 100644
> --- a/kernel/trace/ring_buffer.c
> +++ b/kernel/trace/ring_buffer.c
[ ... ]
> @@ -6302,11 +6308,14 @@ ring_buffer_iter_peek(struct ring_buffer_iter *iter, u64 *ts)
> struct ring_buffer_per_cpu *cpu_buffer = iter->cpu_buffer;
> struct ring_buffer_event *event;
> unsigned long flags;
> + bool dolock;
>
> again:
> - raw_spin_lock_irqsave(&cpu_buffer->reader_lock, flags);
> + local_irq_save(flags);
> + dolock = rb_reader_lock(cpu_buffer);
[Severity: High]
This is a pre-existing issue, but does rb_reader_lock() actually prevent
deadlocks during non-NMI panics?
Looking at rb_reader_lock(), it only falls back to raw_spin_trylock() when
in_nmi() is true:
static inline bool rb_reader_lock(struct ring_buffer_per_cpu *cpu_buffer)
{
if (likely(!in_nmi())) {
raw_spin_lock(&cpu_buffer->reader_lock);
return true;
}
...
If a standard oops or sysrq-c triggers a panic in a normal process or softirq
context where in_nmi() is false, won't this unconditionally call
raw_spin_lock()?
If smp_send_stop() halted another CPU that was currently holding the
reader_lock, or if the panicking CPU interrupted a context holding the lock,
this would spin forever and prevent kdump or panic_timeout from working.
Should rb_reader_lock() also check oops_in_progress to fully realize the
panic-friendly locking behavior intended by this patch?
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260817135517.3919534-1-vdonnefort@google.com?part=10
next prev parent reply other threads:[~2026-08-17 14:04 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-17 13:54 [PATCH v6 00/18] tracing/remotes: Add printk, dump_on_panic and boot parameters Vincent Donnefort
2026-08-17 13:55 ` [PATCH v6 01/18] tracing/remotes: Gate tracefs files opening on trace remote registration Vincent Donnefort
2026-08-17 14:09 ` sashiko-bot
2026-08-17 13:55 ` [PATCH v6 02/18] tracing/remotes: Release tracefs,eventfs on registration failure Vincent Donnefort
2026-08-17 13:55 ` [PATCH v6 03/18] tracing/remotes: Use kstrtobool for boolean tracefs files Vincent Donnefort
2026-08-17 14:11 ` sashiko-bot
2026-08-17 13:55 ` [PATCH v6 04/18] tracing/remotes: Use a single per-remote polling work Vincent Donnefort
2026-08-17 13:55 ` [PATCH v6 05/18] tracing/simple_ring_buffer: Add support for compressed length Vincent Donnefort
2026-08-17 13:55 ` [PATCH v6 06/18] tracing/remotes: Add dmesg tracefs file Vincent Donnefort
2026-08-17 14:09 ` sashiko-bot
2026-08-17 13:55 ` [PATCH v6 07/18] tracing/remotes: selftests: Add a test for the " Vincent Donnefort
2026-08-17 14:05 ` sashiko-bot
2026-08-17 13:55 ` [PATCH v6 08/18] tracing/remotes: selftests: Prefix hypervisor folder Vincent Donnefort
2026-08-17 13:55 ` [PATCH v6 09/18] ring-buffer: Use irqsave for the reader lock in ring_buffer_poll_remote Vincent Donnefort
2026-08-17 13:55 ` [PATCH v6 10/18] ring-buffer: Use panic-friendly locking in ring_buffer_iter interface Vincent Donnefort
2026-08-17 14:04 ` sashiko-bot [this message]
2026-08-17 13:55 ` [PATCH v6 11/18] ring-buffer: Add ring_buffer_read_remote_meta_page() Vincent Donnefort
2026-08-17 13:55 ` [PATCH v6 12/18] ring-buffer: Add kerneldoc for ring_buffer_poll_remote Vincent Donnefort
2026-08-17 13:55 ` [PATCH v6 13/18] tracing/remotes: Add dump_on_panic tracefs file Vincent Donnefort
2026-08-17 14:10 ` sashiko-bot
2026-08-17 13:55 ` [PATCH v6 14/18] tracing/remotes: selftests: Add a test for the " Vincent Donnefort
2026-08-17 14:07 ` sashiko-bot
2026-08-17 13:55 ` [PATCH v6 15/18] tracing/remotes: Add poll_ms " Vincent Donnefort
2026-08-17 13:55 ` [PATCH v6 16/18] tracing/remotes: Add trace_remote cmdline options Vincent Donnefort
2026-08-17 14:12 ` sashiko-bot
2026-08-17 13:55 ` [PATCH v6 17/18] Documentation: tracing/remotes: Add detailed tracefs layout Vincent Donnefort
2026-08-17 13:55 ` [PATCH v6 18/18] Documentation/kernel-parameters: Add trace_remote Vincent Donnefort
2026-08-17 14:21 ` sashiko-bot
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=20260817140454.231C71F00A3A@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=vdonnefort@google.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.