Skip to content

Commit

Permalink
bpf: let bpf_list_add_device() take the device list directly
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
  • Loading branch information
Christian Brauner committed Feb 26, 2021
1 parent 277d80c commit ca5c34f
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 7 deletions.
2 changes: 1 addition & 1 deletion src/lxc/cgroups/cgfsng.c
Expand Up @@ -3110,7 +3110,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;
Expand Down
8 changes: 4 additions & 4 deletions src/lxc/cgroups/cgroup2_devices.c
Expand Up @@ -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 &&
Expand Down Expand Up @@ -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;
}
Expand Down
3 changes: 2 additions & 1 deletion src/lxc/cgroups/cgroup2_devices.h
Expand Up @@ -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);

Expand Down
2 changes: 1 addition & 1 deletion src/lxc/commands.c
Expand Up @@ -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;

Expand Down

0 comments on commit ca5c34f

Please sign in to comment.