diff options
author | Alexei Starovoitov <ast@kernel.org> | 2023-11-14 08:56:56 -0800 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2023-11-14 08:59:43 -0800 |
commit | 81427a62a22148cdc85db38a6fbe487d0d2044b6 (patch) | |
tree | b01a069094a5238f3a5e6dcf828870c7a3b6d4dd /kernel/bpf/helpers.c | |
parent | 727a92d62fd6a382b4c5972008e45667e707b0e4 (diff) | |
parent | 360769233cc9c921e90ae387d167ea3cd3cbb04c (diff) |
Merge branch 'bpf-add-support-for-cgroup1-bpf-part'
Yafang Shao says:
====================
bpf: Add support for cgroup1, BPF part
This is the BPF part of the series "bpf, cgroup: Add BPF support for
cgroup1 hierarchy" with adjustment in the last two patches compared
to the previous one.
v3->v4:
- use subsys_name instead of cgrp_name in get_cgroup_hierarchy_id()
(Tejun)
- use local bpf_link instead of modifying the skeleton in the
selftests
v3: https://lwn.net/Articles/949264/
====================
Link: https://lore.kernel.org/r/20231111090034.4248-1-laoar.shao@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'kernel/bpf/helpers.c')
-rw-r--r-- | kernel/bpf/helpers.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c index 03517db5cfb3..b45a8381f9bd 100644 --- a/kernel/bpf/helpers.c +++ b/kernel/bpf/helpers.c @@ -2228,6 +2228,25 @@ __bpf_kfunc long bpf_task_under_cgroup(struct task_struct *task, rcu_read_unlock(); return ret; } + +/** + * bpf_task_get_cgroup1 - Acquires the associated cgroup of a task within a + * specific cgroup1 hierarchy. The cgroup1 hierarchy is identified by its + * hierarchy ID. + * @task: The target task + * @hierarchy_id: The ID of a cgroup1 hierarchy + * + * On success, the cgroup is returen. On failure, NULL is returned. + */ +__bpf_kfunc struct cgroup * +bpf_task_get_cgroup1(struct task_struct *task, int hierarchy_id) +{ + struct cgroup *cgrp = task_get_cgroup1(task, hierarchy_id); + + if (IS_ERR(cgrp)) + return NULL; + return cgrp; +} #endif /* CONFIG_CGROUPS */ /** @@ -2534,6 +2553,7 @@ BTF_ID_FLAGS(func, bpf_cgroup_release, KF_RELEASE) BTF_ID_FLAGS(func, bpf_cgroup_ancestor, KF_ACQUIRE | KF_RCU | KF_RET_NULL) BTF_ID_FLAGS(func, bpf_cgroup_from_id, KF_ACQUIRE | KF_RET_NULL) BTF_ID_FLAGS(func, bpf_task_under_cgroup, KF_RCU) +BTF_ID_FLAGS(func, bpf_task_get_cgroup1, KF_ACQUIRE | KF_RCU | KF_RET_NULL) #endif BTF_ID_FLAGS(func, bpf_task_from_pid, KF_ACQUIRE | KF_RET_NULL) BTF_ID_FLAGS(func, bpf_throw) |