• Yonghong Song's avatar
    bpf: Add BPF_KPTR_PERCPU as a field type · 55db92f4
    Yonghong Song authored
    BPF_KPTR_PERCPU represents a percpu field type like below
    
      struct val_t {
        ... fields ...
      };
      struct t {
        ...
        struct val_t __percpu_kptr *percpu_data_ptr;
        ...
      };
    
    where
      #define __percpu_kptr __attribute__((btf_type_tag("percpu_kptr")))
    
    While BPF_KPTR_REF points to a trusted kernel object or a trusted
    local object, BPF_KPTR_PERCPU points to a trusted local
    percpu object.
    
    This patch added basic support for BPF_KPTR_PERCPU
    related to percpu_kptr field parsing, recording and free operations.
    BPF_KPTR_PERCPU also supports the same map types
    as BPF_KPTR_REF does.
    
    Note that unlike a local kptr, it is possible that
    a BPF_KTPR_PERCPU struct may not contain any
    special fields like other kptr, bpf_spin_lock, bpf_list_head, etc.
    Signed-off-by: default avatarYonghong Song <yonghong.song@linux.dev>
    Link: https://lore.kernel.org/r/20230827152739.1996391-1-yonghong.song@linux.devSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    55db92f4
btf.c 221 KB