2020-07-10 09:23:22

by Wenbo Zhang

[permalink] [raw]
Subject: [PATCH] bpf: fix fds_example SIGSEGV error

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 <[email protected]>
---
samples/bpf/fds_example.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/samples/bpf/fds_example.c b/samples/bpf/fds_example.c
index d5992f787232..59f45fef5110 100644
--- a/samples/bpf/fds_example.c
+++ b/samples/bpf/fds_example.c
@@ -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;

--
2.17.1


2020-07-10 18:47:35

by Andrii Nakryiko

[permalink] [raw]
Subject: Re: [PATCH] bpf: fix fds_example SIGSEGV error

On Fri, Jul 10, 2020 at 2:21 AM Wenbo Zhang <[email protected]> wrote:
>
> 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 <[email protected]>
> ---

Acked-by: Andrii Nakryiko <[email protected]>

> samples/bpf/fds_example.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>

[...]