• Kumar Kartikeya Dwivedi's avatar
    bpf: Introduce allocated objects support · 282de143
    Kumar Kartikeya Dwivedi authored
    Introduce support for representing pointers to objects allocated by the
    BPF program, i.e. PTR_TO_BTF_ID that point to a type in program BTF.
    This is indicated by the presence of MEM_ALLOC type flag in reg->type to
    avoid having to check btf_is_kernel when trying to match argument types
    in helpers.
    
    Whenever walking such types, any pointers being walked will always yield
    a SCALAR instead of pointer. In the future we might permit kptr inside
    such allocated objects (either kernel or program allocated), and it will
    then form a PTR_TO_BTF_ID of the respective type.
    
    For now, such allocated objects will always be referenced in verifier
    context, hence ref_obj_id == 0 for them is a bug. It is allowed to write
    to such objects, as long fields that are special are not touched
    (support for which will be added in subsequent patches). Note that once
    such a pointer is marked PTR_UNTRUSTED, it is no longer allowed to write
    to it.
    
    No PROBE_MEM handling is therefore done for loads into this type unless
    PTR_UNTRUSTED is part of the register type, since they can never be in
    an undefined state, and their lifetime will always be valid.
    Signed-off-by: default avatarKumar Kartikeya Dwivedi <memxor@gmail.com>
    Link: https://lore.kernel.org/r/20221118015614.2013203-6-memxor@gmail.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    282de143
verifier.c 448 KB