The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxc/pull/3476

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
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.brau...@ubuntu.com>
From fddbd86638a1866f763f61c1fd70ef9bb7a429b0 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brau...@ubuntu.com>
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 <christian.brau...@ubuntu.com>
---
 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 fd60d5a49b..422d70d221 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;
 }
 
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to