• Kumar Kartikeya Dwivedi's avatar
    bpf: Populate pairs of btf_id and destructor kfunc in btf · 5ce937d6
    Kumar Kartikeya Dwivedi authored
    To support storing referenced PTR_TO_BTF_ID in maps, we require
    associating a specific BTF ID with a 'destructor' kfunc. This is because
    we need to release a live referenced pointer at a certain offset in map
    value from the map destruction path, otherwise we end up leaking
    resources.
    
    Hence, introduce support for passing an array of btf_id, kfunc_btf_id
    pairs that denote a BTF ID and its associated release function. Then,
    add an accessor 'btf_find_dtor_kfunc' which can be used to look up the
    destructor kfunc of a certain BTF ID. If found, we can use it to free
    the object from the map free path.
    
    The registration of these pairs also serve as a whitelist of structures
    which are allowed as referenced PTR_TO_BTF_ID in a BPF map, because
    without finding the destructor kfunc, we will bail and return an error.
    Signed-off-by: default avatarKumar Kartikeya Dwivedi <memxor@gmail.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20220424214901.2743946-7-memxor@gmail.com
    5ce937d6
btf.c 196 KB