diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 39c37b7d2d126f074c953b755bf7e82567cd509a..813382e77c357639ecee8f234538076d193e7db0 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -6623,13 +6623,14 @@ static ssize_t tracing_splice_read_pipe(struct file *filp, /* Copy the data into the page, so we can start over. */ ret = trace_seq_to_buffer(&iter->seq, page_address(spd.pages[i]), - trace_seq_used(&iter->seq)); + min((size_t)trace_seq_used(&iter->seq), + (size_t)PAGE_SIZE)); if (ret < 0) { __free_page(spd.pages[i]); break; } spd.partial[i].offset = 0; - spd.partial[i].len = trace_seq_used(&iter->seq); + spd.partial[i].len = ret; trace_seq_init(&iter->seq); }