• Andrii Nakryiko's avatar
    bpf: reuse btf_prepare_func_args() check for main program BTF validation · 5eccd2db
    Andrii Nakryiko authored
    Instead of btf_check_subprog_arg_match(), use btf_prepare_func_args()
    logic to validate "trustworthiness" of main BPF program's BTF information,
    if it is present.
    
    We ignored results of original BTF check anyway, often times producing
    confusing and ominously-sounding "reg type unsupported for arg#0
    function" message, which has no apparent effect on program correctness
    and verification process.
    
    All the -EFAULT returning sanity checks are already performed in
    check_btf_info_early(), so there is zero reason to have this duplication
    of logic between btf_check_subprog_call() and btf_check_subprog_arg_match().
    Dropping btf_check_subprog_arg_match() simplifies
    btf_check_func_arg_match() further removing `bool processing_call` flag.
    
    One subtle bit that was done by btf_check_subprog_arg_match() was
    potentially marking main program's BTF as unreliable. We do this
    explicitly now with a dedicated simple check, preserving the original
    behavior, but now based on well factored btf_prepare_func_args() logic.
    Acked-by: default avatarEduard Zingerman <eddyz87@gmail.com>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/r/20231215011334.2307144-3-andrii@kernel.orgSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    5eccd2db
verifier.c 621 KB