From: Christian Brauner Date: Thu, 18 Feb 2021 12:35:03 +0000 (+0100) Subject: bpf: let bpf_list_add_device() take the device list directly X-Git-Tag: lxc-5.0.0~278^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=354d21c49129a58b2eb985229f852358b25e54ff;p=thirdparty%2Flxc.git bpf: let bpf_list_add_device() take the device list directly Signed-off-by: Christian Brauner --- diff --git a/src/lxc/cgroups/cgfsng.c b/src/lxc/cgroups/cgfsng.c index 64276cde8..c8441e7e6 100644 --- a/src/lxc/cgroups/cgfsng.c +++ b/src/lxc/cgroups/cgfsng.c @@ -3112,7 +3112,7 @@ static int bpf_device_cgroup_prepare(struct cgroup_ops *ops, if (ret < 0) return log_error_errno(-1, EINVAL, "Failed to parse device string %s=%s", key, val); - ret = bpf_list_add_device(conf, &device_item); + ret = bpf_list_add_device(&conf->devices, &device_item); if (ret < 0) return -1; return 0; diff --git a/src/lxc/cgroups/cgroup2_devices.c b/src/lxc/cgroups/cgroup2_devices.c index a1c9bc98b..57dbfbf8e 100644 --- a/src/lxc/cgroups/cgroup2_devices.c +++ b/src/lxc/cgroups/cgroup2_devices.c @@ -467,16 +467,16 @@ void bpf_device_program_free(struct cgroup_ops *ops) } } -int bpf_list_add_device(struct lxc_conf *conf, struct device_item *device) +int bpf_list_add_device(struct lxc_list *devices, struct device_item *device) { __do_free struct lxc_list *list_elem = NULL; __do_free struct device_item *new_device = NULL; struct lxc_list *it; - if (!conf || !device) + if (!devices || !device) return ret_errno(EINVAL); - lxc_list_for_each(it, &conf->devices) { + lxc_list_for_each(it, devices) { struct device_item *cur = it->elem; if (cur->global_rule > LXC_BPF_DEVICE_CGROUP_LOCAL_RULE && @@ -527,7 +527,7 @@ int bpf_list_add_device(struct lxc_conf *conf, struct device_item *device) return log_error_errno(-1, ENOMEM, "Failed to allocate new device item"); lxc_list_add_elem(list_elem, move_ptr(new_device)); - lxc_list_add_tail(&conf->devices, move_ptr(list_elem)); + lxc_list_add_tail(devices, move_ptr(list_elem)); return 0; } diff --git a/src/lxc/cgroups/cgroup2_devices.h b/src/lxc/cgroups/cgroup2_devices.h index 89388934d..3def63597 100644 --- a/src/lxc/cgroups/cgroup2_devices.h +++ b/src/lxc/cgroups/cgroup2_devices.h @@ -96,7 +96,8 @@ __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); -__hidden extern int bpf_list_add_device(struct lxc_conf *conf, struct device_item *device); +__hidden extern int bpf_list_add_device(struct lxc_list *devices, + struct device_item *device); __hidden extern bool bpf_cgroup_devices_attach(struct cgroup_ops *ops, struct lxc_list *devices); diff --git a/src/lxc/commands.c b/src/lxc/commands.c index 6a64b061f..32144b511 100644 --- a/src/lxc/commands.c +++ b/src/lxc/commands.c @@ -1222,7 +1222,7 @@ static int lxc_cmd_add_bpf_device_cgroup_callback(int fd, struct lxc_cmd_req *re if (unified->cgfd_mon < 0) goto respond; - ret = bpf_list_add_device(conf, device); + ret = bpf_list_add_device(&conf->devices, device); if (ret < 0) goto respond;