]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
bpf: Fix fds_example SIGSEGV error
authorWenbo Zhang <ethercflow@gmail.com>
Fri, 10 Jul 2020 09:20:35 +0000 (05:20 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Aug 2020 06:16:03 +0000 (08:16 +0200)
[ Upstream commit eef8a42d6ce087d1c81c960ae0d14f955b742feb ]

The `BPF_LOG_BUF_SIZE`'s value is `UINT32_MAX >> 8`, so define an array
with it on stack caused an overflow.

Signed-off-by: Wenbo Zhang <ethercflow@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200710092035.28919-1-ethercflow@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
samples/bpf/fds_example.c

index 2d4b717726b645b9956dc65f672027cc071158b9..34b3fca788e8d9c7a054aea1998c079eb7999043 100644 (file)
@@ -30,6 +30,8 @@
 #define BPF_M_MAP      1
 #define BPF_M_PROG     2
 
+char bpf_log_buf[BPF_LOG_BUF_SIZE];
+
 static void usage(void)
 {
        printf("Usage: fds_example [...]\n");
@@ -57,7 +59,6 @@ static int bpf_prog_create(const char *object)
                BPF_EXIT_INSN(),
        };
        size_t insns_cnt = sizeof(insns) / sizeof(struct bpf_insn);
-       char bpf_log_buf[BPF_LOG_BUF_SIZE];
        struct bpf_object *obj;
        int prog_fd;