Messages in this thread |  | | Date | Mon, 23 Mar 2015 10:32:45 -0700 | From | Alexei Starovoitov <> | Subject | Re: [PATCH v9 tip 6/9] samples: bpf: simple non-portable kprobe filter example |
| |
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!
|  |