Re: [PATCH v9 tip 6/9] samples: bpf: simple non-portable kprobe filter example

Alexei Starovoitov
2015-03-23T17:32:55Z

On 3/23/15 12:35 AM, Ingo Molnar wrote:
>
> * Alexei Starovoitov <ast@plumgrid.com> wrote:
>
>> +void read_trace_pipe(void)
>> +{
>> + int trace_fd;
>> +
>> + trace_fd = open(DEBUGFS "trace_pipe", O_RDONLY, 0);
>> + if (trace_fd < 0)
>> + return;
>> +
>> + while (1) {
>> + static char buf[4096];
>> + ssize_t sz;
>> +
>> + sz = read(trace_fd, buf, sizeof(buf));
>
> read() will return -1 on failure ...
>
>> + if (sz) {
>
> ... this test passes ...
>
>> + buf[sz] = 0;
>
> ... and here we smash the stack?

good point. If it was normal file, for sure it's a bug, but trace_pipe
is a pseudo file and I think read cannot return -1. Regardless, it makes
sense to fix it. Will do. Do you mind I address it as follow up patch?
Or if the rest is ok, can you change the condition to sz>0 while
applying? I can respin the whole thing too, if you like.
Thanks!