Message ID | 20200226130345.209469-2-jolsa@kernel.org |
---|---|
State | Changes Requested |
Delegated to: | BPF Maintainers |
Headers | show |
Series | bpf: Add trampoline and dispatcher to /proc/kallsyms | expand |
On Wed, Feb 26, 2020 at 5:04 AM Jiri Olsa <jolsa@kernel.org> wrote: > > The kbuild test robot reported compile issue on x86 in one of > the following patches that adds <linux/kallsyms.h> include into > <linux/bpf.h>, which is picked up by init_32.c object. > > The problem is that <linux/kallsyms.h> defines global function > is_kernel_text which colides with the static function of the > same name defined in init_32.c: > > $ make ARCH=i386 > ... > >> arch/x86/mm/init_32.c:241:19: error: redefinition of 'is_kernel_text' > static inline int is_kernel_text(unsigned long addr) > ^~~~~~~~~~~~~~ > In file included from include/linux/bpf.h:21:0, > from include/linux/bpf-cgroup.h:5, > from include/linux/cgroup-defs.h:22, > from include/linux/cgroup.h:28, > from include/linux/hugetlb.h:9, > from arch/x86/mm/init_32.c:18: > include/linux/kallsyms.h:31:19: note: previous definition of 'is_kernel_text' was here > static inline int is_kernel_text(unsigned long addr) > > Renaming the init_32.c is_kernel_text function to __is_kernel_text. > > Reported-by: kbuild test robot <lkp@intel.com> > Signed-off-by: Jiri Olsa <jolsa@kernel.org> Acked-by: Song Liu <songliubraving@fb.com>
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index 23df4885bbed..eb6ede2c3d43 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c @@ -238,7 +238,11 @@ page_table_range_init(unsigned long start, unsigned long end, pgd_t *pgd_base) } } -static inline int is_kernel_text(unsigned long addr) +/* + * The <linux/kallsyms.h> already defines is_kernel_text, + * using '__' prefix not to get in conflict. + */ +static inline int __is_kernel_text(unsigned long addr) { if (addr >= (unsigned long)_text && addr <= (unsigned long)__init_end) return 1; @@ -328,8 +332,8 @@ kernel_physical_mapping_init(unsigned long start, addr2 = (pfn + PTRS_PER_PTE-1) * PAGE_SIZE + PAGE_OFFSET + PAGE_SIZE-1; - if (is_kernel_text(addr) || - is_kernel_text(addr2)) + if (__is_kernel_text(addr) || + __is_kernel_text(addr2)) prot = PAGE_KERNEL_LARGE_EXEC; pages_2m++; @@ -354,7 +358,7 @@ kernel_physical_mapping_init(unsigned long start, */ pgprot_t init_prot = __pgprot(PTE_IDENT_ATTR); - if (is_kernel_text(addr)) + if (__is_kernel_text(addr)) prot = PAGE_KERNEL_EXEC; pages_4k++; @@ -881,7 +885,7 @@ static void mark_nxdata_nx(void) */ unsigned long start = PFN_ALIGN(_etext); /* - * This comes from is_kernel_text upper limit. Also HPAGE where used: + * This comes from __is_kernel_text upper limit. Also HPAGE where used: */ unsigned long size = (((unsigned long)__init_end + HPAGE_SIZE) & HPAGE_MASK) - start;