Re: [PATCH bpf-next 2/5] module, bpf: store BTF base pointer in struct module

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jun 18, 2024 at 9:25 AM Alan Maguire <alan.maguire@xxxxxxxxxx> wrote:
>
> ...as this will allow split BTF modules with a base BTF
> representation (rather than the full vmlinux BTF at time of
> BTF encoding) to resolve their references to kernel types in a
> way that is more resilient to small changes in kernel types.
>
> This will allow modules that are not built every time the kernel
> is to provide more resilient BTF, rather than have it invalidated
> every time BTF ids for core kernel types change.
>
> Fields are ordered to avoid holes in struct module.
>
> Signed-off-by: Alan Maguire <alan.maguire@xxxxxxxxxx>
> Reviewed-by: Luis Chamberlain <mcgrof@xxxxxxxxxx>
> ---
>  include/linux/module.h | 2 ++
>  kernel/module/main.c   | 5 ++++-
>  2 files changed, 6 insertions(+), 1 deletion(-)
>

Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx>


> diff --git a/include/linux/module.h b/include/linux/module.h
> index ffa1c603163c..b79d926cae8a 100644
> --- a/include/linux/module.h
> +++ b/include/linux/module.h
> @@ -509,7 +509,9 @@ struct module {
>  #endif
>  #ifdef CONFIG_DEBUG_INFO_BTF_MODULES
>         unsigned int btf_data_size;
> +       unsigned int btf_base_data_size;
>         void *btf_data;
> +       void *btf_base_data;
>  #endif
>  #ifdef CONFIG_JUMP_LABEL
>         struct jump_entry *jump_entries;
> diff --git a/kernel/module/main.c b/kernel/module/main.c
> index d18a94b973e1..d9592195c5bb 100644
> --- a/kernel/module/main.c
> +++ b/kernel/module/main.c
> @@ -2166,6 +2166,8 @@ static int find_module_sections(struct module *mod, struct load_info *info)
>  #endif
>  #ifdef CONFIG_DEBUG_INFO_BTF_MODULES
>         mod->btf_data = any_section_objs(info, ".BTF", 1, &mod->btf_data_size);
> +       mod->btf_base_data = any_section_objs(info, ".BTF.base", 1,
> +                                             &mod->btf_base_data_size);
>  #endif
>  #ifdef CONFIG_JUMP_LABEL
>         mod->jump_entries = section_objs(info, "__jump_table",
> @@ -2590,8 +2592,9 @@ static noinline int do_init_module(struct module *mod)
>         }
>
>  #ifdef CONFIG_DEBUG_INFO_BTF_MODULES
> -       /* .BTF is not SHF_ALLOC and will get removed, so sanitize pointer */
> +       /* .BTF is not SHF_ALLOC and will get removed, so sanitize pointers */
>         mod->btf_data = NULL;
> +       mod->btf_base_data = NULL;
>  #endif
>         /*
>          * We want to free module_init, but be aware that kallsyms may be
> --
> 2.31.1
>





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux