]> git.baikalelectronics.ru Git - kernel.git/commit
bpf: Allow access to int pointer arguments in tracing programs
authorJiri Olsa <jolsa@redhat.com>
Wed, 8 Dec 2021 19:32:41 +0000 (20:32 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 13 Dec 2021 17:24:21 +0000 (09:24 -0800)
commite29276e28db23e0a96a1f0054c5f6a9e724f4755
treed585a63c5c0c3f956cf605f9ce3cbe680dc93778
parentd0ed21aa8b6f8d97acd6704d940451f8b1236a15
bpf: Allow access to int pointer arguments in tracing programs

Adding support to access arguments with int pointer arguments
in tracing programs.

Currently we allow tracing programs to access only pointers to
string (char pointer), void pointers and pointers to structs.

If we try to access argument which is pointer to int, verifier
will fail to load the program with;

  R1 type=ctx expected=fp
  ; int BPF_PROG(fmod_ret_test, int _a, __u64 _b, int _ret)
  0: (bf) r6 = r1
  ; int BPF_PROG(fmod_ret_test, int _a, __u64 _b, int _ret)
  1: (79) r9 = *(u64 *)(r6 +8)
  func 'bpf_modify_return_test' arg1 type INT is not a struct

There is no harm for the program to access int pointer argument.
We are already doing that for string pointer, which is pointer
to int with 1 byte size.

Changing the is_string_ptr to generic integer check and renaming
it to btf_type_is_int.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20211208193245.172141-2-jolsa@kernel.org
kernel/bpf/btf.c