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 >