[lxc-devel] [lxc/master] cgroups: handle empty bpf log buffer

brauner on Github lxc-bot at linuxcontainers.org
Sun Jul 5 19:05:17 UTC 2020


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 502 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200705/25eaa162/attachment.bin>
-------------- next part --------------
From fddbd86638a1866f763f61c1fd70ef9bb7a429b0 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at 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.brauner at 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;
 }
 


More information about the lxc-devel mailing list