]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
cgroups: handle empty bpf log buffer 3476/head
authorChristian Brauner <christian.brauner@ubuntu.com>
Sun, 5 Jul 2020 19:04:07 +0000 (21:04 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Sun, 5 Jul 2020 19:04:27 +0000 (21:04 +0200)
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 <christian.brauner@ubuntu.com>
src/lxc/cgroups/cgroup2_devices.c

index fd60d5a49b6bdac822665ac6b92aab813480023e..422d70d221d013b6aa99fe336f48903a24ffab0b 100644 (file)
@@ -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;
 }