• Martin KaFai Lau's avatar
    bpf: btf: Remove unused bits from uapi/linux/btf.h · aea2f7b8
    Martin KaFai Lau authored
    This patch does the followings:
    1. Limit BTF_MAX_TYPES and BTF_MAX_NAME_OFFSET to 64k.  We can
       raise it later.
    
    2. Remove the BTF_TYPE_PARENT and BTF_STR_TBL_ELF_ID.  They are
       currently encoded at the highest bit of a u32.
       It is because the current use case does not require supporting
       parent type (i.e type_id referring to a type in another BTF file).
       It also does not support referring to a string in ELF.
    
       The BTF_TYPE_PARENT and BTF_STR_TBL_ELF_ID checks are replaced
       by BTF_TYPE_ID_CHECK and BTF_STR_OFFSET_CHECK which are
       defined in btf.c instead of uapi/linux/btf.h.
    
    3. Limit the BTF_INFO_KIND from 5 bits to 4 bits which is enough.
       There is unused bits headroom if we ever needed it later.
    
    4. The root bit in BTF_INFO is also removed because it is not
       used in the current use case.
    
    5. Remove BTF_INT_VARARGS since func type is not supported now.
       The BTF_INT_ENCODING is limited to 4 bits instead of 8 bits.
    
    The above can be added back later because the verifier
    ensures the unused bits are zeros.
    Signed-off-by: default avatarMartin KaFai Lau <kafai@fb.com>
    Acked-by: default avatarYonghong Song <yhs@fb.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    aea2f7b8
btf.c 57.2 KB