On 2022/10/13 08:50, Martin KaFai Lau wrote: > On 10/12/22 5:58 AM, Chengming Zhou wrote: >> When tracing a kernel function with arg type is u32*, btf_ctx_access() >> would report error: arg2 type INT is not a struct. >> >> The commit bb6728d75611 ("bpf: Allow access to int pointer arguments >> in tracing programs") added support for int pointer, but don't skip >> modifiers before checking it's type. This patch fixes it. > > A selftest is needed. You can refer to the selftest added in the patch set [0] of the commit bb6728d75611. > > This belongs to bpf-next. Please tag it as bpf-next and also v2 in the next revision: > Documentation/bpf/bpf_devel_QA.rst (Q: How do I indicate which tree....) > > [0]: https://lore.kernel.org/bpf/20211208193245.172141-2-jolsa@xxxxxxxxxx/ Thanks for these helpful references, will do. > >> >> Fixes: bb6728d75611 ("bpf: Allow access to int pointer arguments in tracing programs") >> Signed-off-by: Chengming Zhou <zhouchengming@xxxxxxxxxxxxx> >> --- >> kernel/bpf/btf.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c >> index eba603cec2c5..2b343c42ed10 100644 >> --- a/kernel/bpf/btf.c >> +++ b/kernel/bpf/btf.c >> @@ -5316,8 +5316,8 @@ static bool is_int_ptr(struct btf *btf, const struct btf_type *t) >> /* t comes in already as a pointer */ >> t = btf_type_by_id(btf, t->type); >> - /* allow const */ >> - if (BTF_INFO_KIND(t->info) == BTF_KIND_CONST) >> + /* skip modifiers */ >> + while (btf_type_is_modifier(t)) > > There is btf_type_skip_modifiers() that should be useful here. Ok, will change to use this. > >> t = btf_type_by_id(btf, t->type); >> return btf_type_is_int(t); >