mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
bpf: mark mm->owner as __safe_rcu_or_null
When CONFIG_MEMCG is enabled, we can access mm->owner under RCU. The
owner can be NULL. With this change, BPF helpers can safely access
mm->owner to retrieve the associated task from the mm. We can then make
policy decision based on the task attribute.
The typical use case is as follows,
bpf_rcu_read_lock(); // rcu lock must be held for rcu trusted field
@owner = @mm->owner; // mm_struct::owner is rcu trusted or null
if (!@owner)
goto out;
/* Do something based on the task attribute */
out:
bpf_rcu_read_unlock();
Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Acked-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Link: https://lore.kernel.org/r/20251016063929.13830-2-laoar.shao@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
c67f4ae737
commit
ec8e3e27a1
|
|
@ -7054,6 +7054,9 @@ BTF_TYPE_SAFE_RCU(struct cgroup_subsys_state) {
|
|||
/* RCU trusted: these fields are trusted in RCU CS and can be NULL */
|
||||
BTF_TYPE_SAFE_RCU_OR_NULL(struct mm_struct) {
|
||||
struct file __rcu *exe_file;
|
||||
#ifdef CONFIG_MEMCG
|
||||
struct task_struct __rcu *owner;
|
||||
#endif
|
||||
};
|
||||
|
||||
/* skb->sk, req->sk are not RCU protected, but we mark them as such
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user