aboutsummaryrefslogtreecommitdiff
path: root/kernel/trace/ring_buffer.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2023-09-23 05:35:55 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2023-09-23 05:35:55 -0400
commit5804c19b80bf625c6a9925317f845e497434d6d3 (patch)
treeba4a0bf9cac721e2bf898e3be5ab64773da5a9d2 /kernel/trace/ring_buffer.c
parent916e3e5f26abc165437950daff370c0693572ef4 (diff)
parent071ef070ca77e6dfe33fd78afa293e83422f0411 (diff)
downloadlinux-5804c19b80bf625c6a9925317f845e497434d6d3.tar.gz
linux-5804c19b80bf625c6a9925317f845e497434d6d3.tar.bz2
linux-5804c19b80bf625c6a9925317f845e497434d6d3.zip
Merge tag 'kvm-riscv-fixes-6.6-1' of https://github.com/kvm-riscv/linux into HEAD
KVM/riscv fixes for 6.6, take #1 - Fix KVM_GET_REG_LIST API for ISA_EXT registers - Fix reading ISA_EXT register of a missing extension - Fix ISA_EXT register handling in get-reg-list test - Fix filtering of AIA registers in get-reg-list test
Diffstat (limited to 'kernel/trace/ring_buffer.c')
-rw-r--r--kernel/trace/ring_buffer.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index 78502d4c7214..a1651edc48d5 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -2198,6 +2198,8 @@ int ring_buffer_resize(struct trace_buffer *buffer, unsigned long size,
err = -ENOMEM;
goto out_err;
}
+
+ cond_resched();
}
cpus_read_lock();
@@ -2388,6 +2390,11 @@ rb_iter_head_event(struct ring_buffer_iter *iter)
*/
commit = rb_page_commit(iter_head_page);
smp_rmb();
+
+ /* An event needs to be at least 8 bytes in size */
+ if (iter->head > commit - 8)
+ goto reset;
+
event = __rb_page_index(iter_head_page, iter->head);
length = rb_event_length(event);