bpf: Introduce bpf_cgroup_read_xattr to read xattr of cgroup's node
authorSong Liu <song@kernel.org>
Mon, 23 Jun 2025 06:38:52 +0000 (23:38 -0700)
committerChristian Brauner <brauner@kernel.org>
Mon, 23 Jun 2025 11:03:12 +0000 (13:03 +0200)
commit535b070f4a807bbd26a30994aba8dfb4011fd447
tree870e713e5db03b11afd07d91e6847540d704d3fd
parentd1f4e9026007d50e6b28cf8f57a38f03fc3b0ce6
bpf: Introduce bpf_cgroup_read_xattr to read xattr of cgroup's node

BPF programs, such as LSM and sched_ext, would benefit from tags on
cgroups. One common practice to apply such tags is to set xattrs on
cgroupfs folders.

Introduce kfunc bpf_cgroup_read_xattr, which allows reading cgroup's
xattr.

Note that, we already have bpf_get_[file|dentry]_xattr. However, these
two APIs are not ideal for reading cgroupfs xattrs, because:

  1) These two APIs only works in sleepable contexts;
  2) There is no kfunc that matches current cgroup to cgroupfs dentry.

bpf_cgroup_read_xattr is generic and can be useful for many program
types. It is also safe, because it requires trusted or rcu protected
argument (KF_RCU). Therefore, we make it available to all program types.

Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/20250623063854.1896364-3-song@kernel.org
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/bpf_fs_kfuncs.c
kernel/bpf/helpers.c