bpf: verifier: make kfuncs args nullalble
Some arguments to kfuncs might be NULL in some cases. But currently it's not possible to pass NULL to any BTF structures because the check for the suffix is located after all type checks. Move it to earlier place to allow nullable args. Acked-by: Eduard Zingerman <eddyz87@gmail.com> Signed-off-by: Vadim Fedorenko <vadfed@meta.com> Link: https://lore.kernel.org/r/20240613211817.1551967-2-vadfed@meta.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
373a4e13ab
commit
a90797993a
@ -11187,6 +11187,9 @@ get_kfunc_ptr_arg_type(struct bpf_verifier_env *env,
|
||||
if (btf_is_prog_ctx_type(&env->log, meta->btf, t, resolve_prog_type(env->prog), argno))
|
||||
return KF_ARG_PTR_TO_CTX;
|
||||
|
||||
if (is_kfunc_arg_nullable(meta->btf, &args[argno]) && register_is_null(reg))
|
||||
return KF_ARG_PTR_TO_NULL;
|
||||
|
||||
if (is_kfunc_arg_alloc_obj(meta->btf, &args[argno]))
|
||||
return KF_ARG_PTR_TO_ALLOC_BTF_ID;
|
||||
|
||||
@ -11232,9 +11235,6 @@ get_kfunc_ptr_arg_type(struct bpf_verifier_env *env,
|
||||
if (is_kfunc_arg_callback(env, meta->btf, &args[argno]))
|
||||
return KF_ARG_PTR_TO_CALLBACK;
|
||||
|
||||
if (is_kfunc_arg_nullable(meta->btf, &args[argno]) && register_is_null(reg))
|
||||
return KF_ARG_PTR_TO_NULL;
|
||||
|
||||
if (argno + 1 < nargs &&
|
||||
(is_kfunc_arg_mem_size(meta->btf, &args[argno + 1], ®s[regno + 1]) ||
|
||||
is_kfunc_arg_const_mem_size(meta->btf, &args[argno + 1], ®s[regno + 1])))
|
||||
|
Loading…
Reference in New Issue
Block a user