]> git.proxmox.com Git - mirror_lxc.git/commitdiff
bpf: simplify bpf (device) program freeing
authorChristian Brauner <christian.brauner@ubuntu.com>
Thu, 18 Feb 2021 15:26:16 +0000 (16:26 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Thu, 18 Feb 2021 15:26:16 +0000 (16:26 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/cgroups/cgroup.c
src/lxc/cgroups/cgroup2_devices.c
src/lxc/cgroups/cgroup2_devices.h

index 775f79f62d0d5cf1c4cad9b1d0431cd36e070464..d29aa483b4b55de112eac9e9ef866e92c1bf65e9 100644 (file)
@@ -71,8 +71,7 @@ void cgroup_exit(struct cgroup_ops *ops)
 
        free_equal(ops->container_cgroup, ops->container_limit_cgroup);
 
-       if (ops->cgroup2_devices)
-               bpf_program_free(ops->cgroup2_devices);
+       bpf_device_program_free(ops);
 
        if (ops->dfd_mnt_cgroupfs_host >= 0)
                close(ops->dfd_mnt_cgroupfs_host);
index 99d67f692847df580f2be7fbb8ab6b9c374b4c15..ae281eeaffac2c5423c483a0635955952ac30f78 100644 (file)
@@ -60,17 +60,6 @@ static int bpf_program_add_instructions(struct bpf_program *prog,
        return 0;
 }
 
-void bpf_program_free(struct bpf_program *prog)
-{
-       if (!prog)
-               return;
-
-       (void)bpf_program_cgroup_detach(prog);
-
-       free(prog->instructions);
-       free(prog);
-}
-
 /* Memory load, dst_reg = *(uint *) (src_reg + off16) */
 #define BPF_LDX_MEM(SIZE, DST, SRC, OFF)                               \
        ((struct bpf_insn){.code = BPF_LDX | BPF_SIZE(SIZE) | BPF_MEM, \
@@ -442,7 +431,7 @@ void bpf_device_program_free(struct cgroup_ops *ops)
 {
        if (ops->cgroup2_devices) {
                (void)bpf_program_cgroup_detach(ops->cgroup2_devices);
-               (void)bpf_program_free(ops->cgroup2_devices);
+               bpf_program_free(ops->cgroup2_devices);
                ops->cgroup2_devices = NULL;
        }
 }
index 89dc0260c21bbc038344f12872ed7486fc4a775d..f4983f0657a731fe338eb55c16aabbfc7c2e43a0 100644 (file)
@@ -88,7 +88,6 @@ __hidden extern int bpf_program_init(struct bpf_program *prog);
 __hidden extern int bpf_program_append_device(struct bpf_program *prog, struct device_item *device);
 __hidden extern int bpf_program_finalize(struct bpf_program *prog);
 __hidden extern int bpf_program_cgroup_detach(struct bpf_program *prog);
-__hidden extern void bpf_program_free(struct bpf_program *prog);
 __hidden extern void bpf_device_program_free(struct cgroup_ops *ops);
 __hidden extern bool bpf_devices_cgroup_supported(void);
 
@@ -100,6 +99,14 @@ __hidden extern bool bpf_cgroup_devices_update(struct cgroup_ops *ops,
                                               struct device_item *new,
                                               struct lxc_list *devices);
 
+static inline void bpf_program_free(struct bpf_program *prog)
+{
+       if (prog) {
+               (void)bpf_program_cgroup_detach(prog);
+               free(prog->instructions);
+               free(prog);
+       }
+}
 define_cleanup_function(struct bpf_program *, bpf_program_free);
 #define __do_bpf_program_free call_cleaner(bpf_program_free)