[PATCH v3] ring-buffer: Skip time delta validation for the counter clock

From: Kirtikumar Anandrao Ramchandani

Date: Thu Nov 05 2026 - 09:26:37 EST


The counter trace clock increments on every read. Time delta validation
assumes that the clock values read while reserving and checking an event
can be reconciled with the deltas stored in the page. With the counter
clock, this assumption can fail for an intact ring buffer and report a
spurious TIME DOES NOT MATCH warning.

Skip time delta validation while the buffer uses trace_clock_counter().
Clock selection already resets the buffer, so events recorded under a
previous clock are not retained for this check. Recording and reading
counter-clock events are unchanged.

Link: https://lore.kernel.org/all/20260920161648.7d9fda60@fedora/
Reported-by: syzbot+eb74dca0d1eb3ec227a7@xxxxxxxxxxxxxxxxxxxxxxxxx
Closes: https://syzkaller.appspot.com/bug?extid=eb74dca0d1eb3ec227a7
Signed-off-by: Kirtikumar Anandrao Ramchandani <kirtiar15502@xxxxxxxxx>
---
Changes in v3:
- Replace the Openwall archive URL with the corresponding lore link.

Changes in v2:
- Resend as plain text after the previous mail client reformatted the diff.

kernel/trace/ring_buffer.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index 1fd28a7..c860d5b 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -4747,6 +4747,10 @@ static void check_buffer(struct
ring_buffer_per_cpu *cpu_buffer,
bool full = false;
int ret;

+ /* The counter clock advances on every read, invalidating this check. */
+ if (cpu_buffer->buffer->clock == trace_clock_counter)
+ return;
+
dpage = info->tail_page->page;

if (tail == CHECK_FULL_PAGE) {

base-commit: 05441d697f7f9a927264f4058cbbc6a03dfcac9d