From fddbd86638a1866f763f61c1fd70ef9bb7a429b0 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Sun, 5 Jul 2020 21:04:07 +0200 Subject: [PATCH] cgroups: handle empty bpf log buffer Link: https://launchpadlibrarian.net/487274879/buildlog_ubuntu-eoan-amd64.lxc_1:4.0.3+master~20200705-1541-0ubuntu1~eoan_BUILDING.txt.gz Signed-off-by: Christian Brauner --- src/lxc/cgroups/cgroup2_devices.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/lxc/cgroups/cgroup2_devices.c b/src/lxc/cgroups/cgroup2_devices.c index fd60d5a49..422d70d22 100644 --- a/src/lxc/cgroups/cgroup2_devices.c +++ b/src/lxc/cgroups/cgroup2_devices.c @@ -325,26 +325,30 @@ static int bpf_program_load_kernel(struct bpf_program *prog, char *log_buf, { union bpf_attr attr; + if ((log_size != 0 && !log_buf) || (log_size == 0 && log_buf)) + return ret_errno(EINVAL); + if (prog->kernel_fd >= 0) { memset(log_buf, 0, log_size); return 0; } attr = (union bpf_attr){ - .prog_type = prog->prog_type, - .insns = PTR_TO_UINT64(prog->instructions), - .insn_cnt = prog->n_instructions, - .license = PTR_TO_UINT64("GPL"), - .log_buf = PTR_TO_UINT64(log_buf), - .log_level = log_level, - .log_size = log_size, + .prog_type = prog->prog_type, + .insns = PTR_TO_UINT64(prog->instructions), + .insn_cnt = prog->n_instructions, + .license = PTR_TO_UINT64("GPL"), + .log_buf = PTR_TO_UINT64(log_buf), + .log_level = log_level, + .log_size = log_size, }; prog->kernel_fd = bpf(BPF_PROG_LOAD, &attr, sizeof(attr)); if (prog->kernel_fd < 0) - return log_error_errno(-1, errno, "Failed to load bpf program: %s", log_buf); + return log_error_errno(-1, errno, "Failed to load bpf program: %s", + log_buf ?: "(null)"); - TRACE("Loaded bpf program: %s", log_buf); + TRACE("Loaded bpf program: %s", log_buf ?: "(null)"); return 0; } -- 2.47.2