samples/bpf: fix sockex2 example
authorAlexei Starovoitov <ast@fb.com>
Wed, 23 Nov 2016 00:52:08 +0000 (16:52 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 24 Nov 2016 21:04:52 +0000 (16:04 -0500)
since llvm commit "Do not expand UNDEF SDNode during insn selection lowering"
llvm will generate code that uses uninitialized registers for cases
where C code is actually uses uninitialized data.
So this sockex2 example is technically broken.
Fix it by initializing on the stack variable fully.
Also increase verifier buffer limit, since verifier output
may not fit in 64k for this sockex2 code depending on llvm version.

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
samples/bpf/libbpf.h
samples/bpf/sockex2_kern.c

index ac6edb61b64a2798f4c4beb261ed8996e6957877..de96a935068d13857c6779ddef5d0422455149e3 100644 (file)
@@ -18,7 +18,7 @@ int bpf_prog_load(enum bpf_prog_type prog_type,
 int bpf_obj_pin(int fd, const char *pathname);
 int bpf_obj_get(const char *pathname);
 
-#define LOG_BUF_SIZE 65536
+#define LOG_BUF_SIZE (256 * 1024)
 extern char bpf_log_buf[LOG_BUF_SIZE];
 
 /* ALU ops on registers, bpf_add|sub|...: dst_reg += src_reg */
index 44e5846c988f865015c1fe1fc0596407a491901d..f58acfc9255612d985664ff884c80c440b43880d 100644 (file)
@@ -198,7 +198,7 @@ struct bpf_map_def SEC("maps") hash_map = {
 SEC("socket2")
 int bpf_prog2(struct __sk_buff *skb)
 {
-       struct bpf_flow_keys flow;
+       struct bpf_flow_keys flow = {};
        struct pair *value;
        u32 key;