2018-12-05 19:18 UTC-0800 ~ Alexei Starovoitov <alexei.starovoi...@gmail.com> > On Wed, Dec 05, 2018 at 06:15:23PM +0000, Quentin Monnet wrote: >>>> + >>>> + /* Allow room for NULL terminating byte and pipe file name */ >>>> + snprintf(format, sizeof(format), "%%*s %%%zds %%99s %%*s %%*d %%*d\\n", >>>> + PATH_MAX - strlen(pipe_name) - 1); >>> >>> before scanning trace_pipe could you add a check that trace_options are >>> compatible? >>> Otherwise there will be a lot of garbage printed. >>> afaik default is rarely changed, so the patch is ok as-is. >>> The followup some time in the future would be perfect. >> >> Sure. What do you mean exactly by compatible options? I can check that >> "trace_printk" is set, is there any other option that would be relevant? > > See Documentation/trace/ftrace.rst > a lot of the flags will change the format significantly. > Like 'bin' will make it binary. > I'm not suggesting to support all possible output formats. > Only to check that trace flags match scanf.
fscanf() is only used to retrieve the name of the sysfs directory where the pipe is located, when listing all the mount points on the system. It is not used to dump the content from the pipe (which is done with getline(), so formatting does not matter much). If the "bin" option is set, "bpftool prog tracelog" will dump the same binary content as "cat /sys/kernel/debug/tracing/trace_pipe", which is the expected behaviour (at least with the current patch). Let me know if you would like me to change this somehow. Thanks, Quentin