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

From: Alexei Starovoitov
Date: Mon Mar 23 2015 - 13:32:59 EST


On 3/23/15 12:35 AM, Ingo Molnar wrote:

* Alexei Starovoitov <ast@xxxxxxxxxxxx> 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!
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/