Message ID | 20191015105636.19254-1-tz.stoyanov@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 219aeb06f9d8b87297c9c9d14423ba840befa20a |
Headers | show |
Series | [v2] trace-cmd: Fix segmentation fault in tracecmd_read_at() in specific use case | expand |
diff --git a/lib/trace-cmd/trace-input.c b/lib/trace-cmd/trace-input.c index 6102eb3..43bdf6a 100644 --- a/lib/trace-cmd/trace-input.c +++ b/lib/trace-cmd/trace-input.c @@ -1282,7 +1282,7 @@ tracecmd_read_at(struct tracecmd_input *handle, unsigned long long offset, break; } - if (cpu < handle->cpus) { + if (cpu < handle->cpus && handle->cpu_data[cpu].page) { if (pcpu) *pcpu = cpu; return read_event(handle, offset, cpu);
There is a segmentation fault in update_page_info() when the requested page is not loaded, handle->cpu_data[cpu].page is NULL. The problematic flow starts from tracecmd_read_at() API, when reading offset in the first page (less than 4K), and this page is still not loaded. The problem can be observed randomly - there is a sporadic KernelShark crash when loading a file, browsing and zooming events. https://bugzilla.kernel.org/show_bug.cgi?id=205165 Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- [ v2 changes: - Moved the check for NULL page after the loop, as Steven Rostedt suggested. ] lib/trace-cmd/trace-input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)