On Wed, May 17, 2023 at 03:18:07PM +0200, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@xxxxxxxx> > > The arch_get_kallsym() function was introduced so that x86 could override > it, but that override was removed in bf904d2762ee ("x86/pti/64: Remove > the SYSCALL64 entry trampoline"), so now this does nothing except causing > a warning about a missing prototype: > > kernel/kallsyms.c:662:12: error: no previous prototype for 'arch_get_kallsym' [-Werror=missing-prototypes] > 662 | int __weak arch_get_kallsym(unsigned int symnum, unsigned long *value, > > Restore the old behavior before d83212d5dd67 ("kallsyms, x86: Export > addresses of PTI entry trampolines") to simplify the code and avoid > the warning. > > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> Shouldn't this go through x86 as this sort of fixesss commit bf904d2762ee ("x86/pti/64: Remove the SYSCALL64 entry trampoline")? Luis > --- > kernel/kallsyms.c | 28 +--------------------------- > 1 file changed, 1 insertion(+), 27 deletions(-) > > diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c > index e01c435595f9..dac13659601f 100644 > --- a/kernel/kallsyms.c > +++ b/kernel/kallsyms.c > @@ -646,7 +646,6 @@ int sprint_backtrace_build_id(char *buffer, unsigned long address) > /* To avoid using get_symbol_offset for every symbol, we carry prefix along. */ > struct kallsym_iter { > loff_t pos; > - loff_t pos_arch_end; > loff_t pos_mod_end; > loff_t pos_ftrace_mod_end; > loff_t pos_bpf_end; > @@ -659,29 +658,9 @@ struct kallsym_iter { > int show_value; > }; > > -int __weak arch_get_kallsym(unsigned int symnum, unsigned long *value, > - char *type, char *name) > -{ > - return -EINVAL; > -} > - > -static int get_ksymbol_arch(struct kallsym_iter *iter) > -{ > - int ret = arch_get_kallsym(iter->pos - kallsyms_num_syms, > - &iter->value, &iter->type, > - iter->name); > - > - if (ret < 0) { > - iter->pos_arch_end = iter->pos; > - return 0; > - } > - > - return 1; > -} > - > static int get_ksymbol_mod(struct kallsym_iter *iter) > { > - int ret = module_get_kallsym(iter->pos - iter->pos_arch_end, > + int ret = module_get_kallsym(iter->pos - kallsyms_num_syms, > &iter->value, &iter->type, > iter->name, iter->module_name, > &iter->exported); > @@ -764,7 +743,6 @@ static void reset_iter(struct kallsym_iter *iter, loff_t new_pos) > iter->nameoff = get_symbol_offset(new_pos); > iter->pos = new_pos; > if (new_pos == 0) { > - iter->pos_arch_end = 0; > iter->pos_mod_end = 0; > iter->pos_ftrace_mod_end = 0; > iter->pos_bpf_end = 0; > @@ -780,10 +758,6 @@ static int update_iter_mod(struct kallsym_iter *iter, loff_t pos) > { > iter->pos = pos; > > - if ((!iter->pos_arch_end || iter->pos_arch_end > pos) && > - get_ksymbol_arch(iter)) > - return 1; > - > if ((!iter->pos_mod_end || iter->pos_mod_end > pos) && > get_ksymbol_mod(iter)) > return 1; > -- > 2.39.2 >