Re: [PATCH] tracing: Fix trace_pipe_raw read panic

From: Steven Rostedt
Date: Mon Jul 24 2017 - 16:24:26 EST



Hi Chunyu,

Thanks for the patch. I'm currently traveling, and will have little
time to test it. Hopefully I can get to it sometime this week.

-- Steve


On Mon, 24 Jul 2017 15:21:06 +0800
Chunyu Hu <chuhu@xxxxxxxxxx> wrote:

> per_cpu trace directories and files are created for all possible cpus,
> but only the cpus which have ever been on-lined have their own per cpu
> ring buffer (allocated by cpuhp threads). While trace_buffers_open, the
> open handler for trace file 'trace_pipe_raw' is always trying to access
> field of ring_buffer_per_cpu, and would panic with the NULL pointer.
>
> Align the behavior of trace_pipe_raw with trace_pipe, that returns -NODEV
> when openning it if that cpu does not have trace ring buffer.
>
> Reproduce:
> cat /sys/kernel/debug/tracing/per_cpu/cpu31/trace_pipe_raw
> (cpu31 is never on-lined, this is a 16 cores x86_64 box)
>
> Tested with:
> 1) boot with maxcpus=14, read trace_pipe_raw of cpu15.
> Got -NODEV.
> 2) oneline cpu15, read trace_pipe_raw of cpu15.
> Get the raw trace data.