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);
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, \
{
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;
}
}
__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);
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)