On Fri, Apr 2, 2021 at 12:36 AM Christophe Leroy <christophe.le...@csgroup.eu> wrote: > > > > Le 30/03/2021 à 06:51, Jordan Niethe a écrit : > > If MODULES_{VADDR,END} are not defined set them to VMALLOC_START and > > VMALLOC_END respectively. This reduces the need for special cases. For > > example, powerpc's module_alloc() was previously predicated on > > MODULES_VADDR being defined but now is unconditionally defined. > > > > This will be useful reducing conditional code in other places that need > > to allocate from the module region (i.e., kprobes). > > > > Signed-off-by: Jordan Niethe <jniet...@gmail.com> > > --- > > v10: New to series > > --- > > arch/powerpc/include/asm/pgtable.h | 5 +++++ > > arch/powerpc/kernel/module.c | 5 +---- > > You probably also have changes to do in kernel/ptdump.c > > In mm/book3s32/mmu.c and mm/kasan/kasan_init_32.c as well allthough that's > harmless here. > > > 2 files changed, 6 insertions(+), 4 deletions(-) > > > > diff --git a/arch/powerpc/include/asm/pgtable.h > > b/arch/powerpc/include/asm/pgtable.h > > index 4eed82172e33..014c2921f26a 100644 > > --- a/arch/powerpc/include/asm/pgtable.h > > +++ b/arch/powerpc/include/asm/pgtable.h > > @@ -167,6 +167,11 @@ struct seq_file; > > void arch_report_meminfo(struct seq_file *m); > > #endif /* CONFIG_PPC64 */ > > > > +#ifndef MODULES_VADDR > > +#define MODULES_VADDR VMALLOC_START > > +#define MODULES_END VMALLOC_END > > +#endif > > + > > #endif /* __ASSEMBLY__ */ > > > > #endif /* _ASM_POWERPC_PGTABLE_H */ > > diff --git a/arch/powerpc/kernel/module.c b/arch/powerpc/kernel/module.c > > index a211b0253cdb..f1fb58389d58 100644 > > --- a/arch/powerpc/kernel/module.c > > +++ b/arch/powerpc/kernel/module.c > > @@ -14,6 +14,7 @@ > > #include <asm/firmware.h> > > #include <linux/sort.h> > > #include <asm/setup.h> > > +#include <linux/mm.h> > > > > static LIST_HEAD(module_bug_list); > > > > @@ -87,13 +88,9 @@ int module_finalize(const Elf_Ehdr *hdr, > > return 0; > > } > > > > -#ifdef MODULES_VADDR > > void *module_alloc(unsigned long size) > > { > > - BUILD_BUG_ON(TASK_SIZE > MODULES_VADDR); > > - > > The above check is needed somewhere, if you remove it from here you have to > perform the check > somewhere else.
This also introduces this warning: fs/proc/kcore.c:626:52: warning: self-comparison always evaluates to false [-Wtautological-compare] 626 | if (MODULES_VADDR != VMALLOC_START && MODULES_END != VMALLOC_END) { I might leave this patch out of this series and use an #ifdef for now and make this change separately as a follow up. > > > return __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END, > > GFP_KERNEL, > > PAGE_KERNEL_EXEC, VM_FLUSH_RESET_PERMS, > > NUMA_NO_NODE, > > __builtin_return_address(0)); > > } > > -#endif > >