bpf_cgroup_release(9)
๐ bpf_cgroup_release(9) โ the Kernel API Manual, bestie edition ๐
okay so real talk, this is bpf_cgroup_release(9) from the Kernel API Manual, and it's genuinely one of the most "hold my hand, we're letting go" functions in the whole BPF kfunc family. no cap.
โจ NAME โจ
bpf_cgroup_release โ release the reference you acquired on a cgroup. that's it, that's the vibe ๐
but wait, there's a huge little asterisk here, and it's giving main character energy: if this kfunc is invoked inside an RCU read region, the cgroup is guaranteed to not be freed until the current grace period has ended โ even if its refcount drops to 0. so like, you let go, but the kernel's not gonna snatch it out from under you mid-read. iconic behavior honestly. ๐ฆ
๐ธ SYNOPSIS ๐ธ
__bpf_kfunc void bpf_cgroup_release (struct cgroup *cgrp );
๐ ARGUMENTS ๐
cgrpโ the cgroup on which a reference is being released. like, the exact one you're saying bye to. don't @ the wrong one bestie ๐ญ
๐ SEE ALSO ๐
the kernel file ./kernel/bpf/helpers.c, and literally the entire extended friend group:
bpf_obj_new(9)bpf_percpu_obj_new(9)bpf_obj_drop(9)bpf_percpu_obj_drop(9)bpf_refcount_acquire(9)bpf_list_push_front(9)bpf_list_push_back(9)bpf_rbtree_add(9)bpf_task_acquire(9)bpf_task_release(9)bpf_cgroup_acquire(9)bpf_cgroup_ancestor(9)bpf_cgroup_from_id(9)bpf_task_under_cgroup(9)bpf_task_get_cgroup1(9)bpf_task_from_pid(9)bpf_task_from_vpid(9)bpf_dynptr_slice(9)bpf_dynptr_slice_rdwr(9)bpf_dynptr_copy(9)bpf_dynptr_memset(9)bpf_iter_bits_new(9)bpf_iter_bits_next(9)bpf_iter_bits_destroy(9)bpf_copy_from_user_str(9)bpf_copy_from_user_task_str(9)bpf_strcmp(9)bpf_strcasecmp(9)bpf_strnchr(9)bpf_strchr(9)bpf_strchrnul(9)bpf_strrchr(9)bpf_strnlen(9)bpf_strlen(9)bpf_strspn(9)bpf_strcspn(9)bpf_strstr(9)bpf_strcasestr(9)bpf_strnstr(9)bpf_strncasestr(9)bpf_lookup_user_key(9)bpf_lookup_system_key(9)bpf_key_put(9)bpf_verify_pkcs7_signature(9)bpf_task_work_schedule_signal(9)bpf_task_work_schedule_resume(9)bpf_timer_cancel_async(9)
๐ซถ friendly reminder: bpf_cgroup_acquire(9) is right there in the list for a reason โ if you release a reference you never acquired, that's not slay, that's a bug. ๐ญ
and that's the whole page, bestie! โจ this little gem lives in ./kernel/bpf, dated October 2026 โ write it on your arm, tell your friends, bpf_cgroup_release(9) periodt. ๐๐๐
๐ฆ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms