diff --git a/arch/arm64/kvm/hyp_trace.c b/arch/arm64/kvm/hyp_trace.c index 100927f9a3a5..d41c2a8ef312 100644 --- a/arch/arm64/kvm/hyp_trace.c +++ b/arch/arm64/kvm/hyp_trace.c @@ -758,6 +758,7 @@ hyp_trace_raw_read(struct file *file, char __user *ubuf, struct ht_iterator *iter = (struct ht_iterator *)file->private_data; size_t size; int ret; + void *page_data; if (iter->copy_leftover) goto read; @@ -786,7 +787,9 @@ read: if (size > cnt) size = cnt; - ret = copy_to_user(ubuf, iter->spare + PAGE_SIZE - size, size); + page_data = ring_buffer_read_page_data( + (struct buffer_data_read_page *)iter->spare); + ret = copy_to_user(ubuf, page_data + PAGE_SIZE - size, size); if (ret == size) return -EFAULT;