diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index cc395946e6c0..f1ea1cb887ff 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -5286,8 +5286,9 @@ __rb_get_reader_page_from_writer(struct ring_buffer_per_cpu *cpu_buffer) } prev_reader = cpu_buffer->meta_page->reader.id; + if (cpu_buffer->meta_page->reader.id == cpu_buffer->reader_page->id) + WARN_ON(cpu_buffer->writer->get_reader_page(cpu_buffer->cpu)); - WARN_ON(cpu_buffer->writer->get_reader_page(cpu_buffer->cpu)); /* nr_pages doesn't include the reader page */ if (cpu_buffer->meta_page->reader.id > cpu_buffer->nr_pages) { WARN_ON(1); @@ -5301,7 +5302,8 @@ __rb_get_reader_page_from_writer(struct ring_buffer_per_cpu *cpu_buffer) cpu_buffer->read_stamp = cpu_buffer->reader_page->page->time_stamp; cpu_buffer->lost_events = cpu_buffer->meta_page->reader.lost_events; - WARN_ON(prev_reader == cpu_buffer->meta_page->reader.id); + WARN_ON(!IS_ENABLED(CONFIG_PKVM_DUMP_TRACE_ON_PANIC) && + prev_reader == cpu_buffer->meta_page->reader.id); if (!rb_page_size(cpu_buffer->reader_page)) return NULL;