The simple ring buffer's reader-page swap retry loop mishandles its last attempt. A success at that point is reported as an error, while a failure is allowed to continue into the pointer updates. The remote ring buffer consumer compounds callback failures by warning and continuing with stale reader metadata.
Fix the retry result in the provider, then stop the remote consumer before it mutates its local page list when the swap fails. These paths are used by remote tracing, including arm64 nVHE EL2 tracing and CONFIG_TRACE_REMOTE_TEST. Testing: make C=2 W=1 kernel/trace/simple_ring_buffer.o kernel/trace/ring_buffer.o scripts/checkpatch.pl --no-tree (each formatted patch) No runtime reproducer was run. The two final-attempt outcomes follow from the retry counter's post-decrement semantics. An arm64 cross-compiler was not available. --- Changes in v2: - Report callback failures with pr_warn_ratelimited() instead of WARN_ON_ONCE(), as suggested by Vincent Donnefort. - Add Vincent Donnefort's Reviewed-by tag to patch 1. - Link to v1: https://lore.kernel.org/r/[email protected] --- Ivan Immanuel Shaji (2): tracing: Fix retry exhaustion in simple ring buffer reader swap ring-buffer: Stop remote reader update when page swap fails kernel/trace/ring_buffer.c | 7 +++++-- kernel/trace/simple_ring_buffer.c | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) --- base-commit: 66498c75b4f8017f62d720d9b59675bdf3abce91 change-id: 20260825-kernel-patch-1-d806e3de01a5 Best regards, -- Ivan Immanuel Shaji <[email protected]>
