diff options
author | Andrii Nakryiko <andrii@kernel.org> | 2023-12-04 15:39:21 -0800 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2023-12-11 19:23:32 -0800 |
commit | 1a1ad782dcbbacd9e8d4e2e7ff1bf14d1db80727 (patch) | |
tree | 2ef700bf4b474dc18dec4fcb804892f6b0887edd /include | |
parent | 22b769bb4f87060774bfdd6facbab438ed3b8453 (diff) | |
download | linux-stable-1a1ad782dcbbacd9e8d4e2e7ff1bf14d1db80727.tar.gz linux-stable-1a1ad782dcbbacd9e8d4e2e7ff1bf14d1db80727.tar.bz2 linux-stable-1a1ad782dcbbacd9e8d4e2e7ff1bf14d1db80727.zip |
bpf: tidy up exception callback management a bit
Use the fact that we are passing subprog index around and have
a corresponding struct bpf_subprog_info in bpf_verifier_env for each
subprogram. We don't need to separately pass around a flag whether
subprog is exception callback or not, each relevant verifier function
can determine this using provided subprog index if we maintain
bpf_subprog_info properly.
Also move out exception callback-specific logic from
btf_prepare_func_args(), keeping it generic. We can enforce all these
restriction right before exception callback verification pass. We add
out parameter, arg_cnt, for now, but this will be unnecessary with
subsequent refactoring and will be removed.
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20231204233931.49758-4-andrii@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/bpf.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/bpf.h b/include/linux/bpf.h index c1a06263a4f3..0bd4889e917a 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -2494,7 +2494,7 @@ int btf_check_subprog_arg_match(struct bpf_verifier_env *env, int subprog, int btf_check_subprog_call(struct bpf_verifier_env *env, int subprog, struct bpf_reg_state *regs); int btf_prepare_func_args(struct bpf_verifier_env *env, int subprog, - struct bpf_reg_state *reg, bool is_ex_cb); + struct bpf_reg_state *reg, u32 *nargs); int btf_check_type_match(struct bpf_verifier_log *log, const struct bpf_prog *prog, struct btf *btf, const struct btf_type *t); const char *btf_find_decl_tag_value(const struct btf *btf, const struct btf_type *pt, |