• Kumar Kartikeya Dwivedi's avatar
    bpf: Support constant scalar arguments for kfuncs · a50388db
    Kumar Kartikeya Dwivedi authored
    Allow passing known constant scalars as arguments to kfuncs that do not
    represent a size parameter. We use mark_chain_precision for the constant
    scalar argument to mark it precise. This makes the search pruning
    optimization of verifier more conservative for such kfunc calls, and
    each non-distinct argument is considered unequivalent.
    
    We will use this support to then expose a bpf_obj_new function where it
    takes the local type ID of a type in program BTF, and returns a
    PTR_TO_BTF_ID | MEM_ALLOC to the local type, and allows programs to
    allocate their own objects.
    
    Each type ID resolves to a distinct type with a possibly distinct size,
    hence the type ID constant matters in terms of program safety and its
    precision needs to be checked between old and cur states inside regsafe.
    The use of mark_chain_precision enables this.
    Signed-off-by: default avatarKumar Kartikeya Dwivedi <memxor@gmail.com>
    Link: https://lore.kernel.org/r/20221118015614.2013203-13-memxor@gmail.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    a50388db
verifier.c 465 KB