Hello,
在 2023/11/7 02:29, Martin KaFai Lau 写道:
On 11/5/23 5:34 AM, Chuyi Zhou wrote:
BTF_TYPE_SAFE_TRUSTED(struct bpf_iter__task) in verifier.c wanted to
teach BPF verifier that bpf_iter__task -> task is a trusted ptr. But it
doesn't work well.
The reason is, bpf_iter__task -> task would go through btf_ctx_access()
which enforces the reg_type of 'task' is ctx_arg_info->reg_type, and in
task_iter.c, we actually explicitly declare that the
ctx_arg_info->reg_type is PTR_TO_BTF_ID_OR_NULL.
This patch sets ctx_arg_info->reg_type is PTR_TO_BTF_ID_OR_NULL |
PTR_TRUSTED in task_reg_info.
Similarly, bpf_cgroup_reg_info -> cgroup is also PTR_TRUSTED since we are
under the protection of cgroup_mutex and we would check cgroup_is_dead()
in __cgroup_iter_seq_show().
Make sense. I think the bpf_tcp_iter made similar change in tcp_seq_info
also. What may be the Fixes tag? Is it fixing the recent kfunc of the
css_task iter?
Thanks for the review.
I think it's not a fix for recent kfunc of css_task iter. We are working
at SEC("iter/task") and SEC("iter/cgroup").
I'm not sure whether it's a 'fix' for cgroup_iter/task_iter. If we need
fix tags, do we need to split this patch into two separate patches? Or
add two fix tags on commit log:
Fixes: d4ccaf58a84721 ("bpf: Introduce cgroup iter")
Fixes: 3c32cc1bceba8a17 ("bpf: Enable bpf_iter targets registering ctx
argument types")
Thanks.