diff options
Diffstat (limited to 'kernel/kallsyms.c')
| -rw-r--r-- | kernel/kallsyms.c | 91 | 
1 files changed, 1 insertions, 90 deletions
diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index ddb91d8edaae..7982cc9d497c 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -484,34 +484,6 @@ found:  	return 0;  } -int lookup_symbol_attrs(unsigned long addr, unsigned long *size, -			unsigned long *offset, char *modname, char *name) -{ -	int res; - -	name[0] = '\0'; -	name[KSYM_NAME_LEN - 1] = '\0'; - -	if (is_ksym_addr(addr)) { -		unsigned long pos; - -		pos = get_symbol_pos(addr, size, offset); -		/* Grab name */ -		kallsyms_expand_symbol(get_symbol_offset(pos), -				       name, KSYM_NAME_LEN); -		modname[0] = '\0'; -		goto found; -	} -	/* See if it's in a module. */ -	res = lookup_module_symbol_attrs(addr, size, offset, modname, name); -	if (res) -		return res; - -found: -	cleanup_symbol_name(name); -	return 0; -} -  /* Look up a kernel symbol and return it in a text buffer. */  static int __sprint_symbol(char *buffer, unsigned long address,  			   int symbol_offset, int add_offset, int add_buildid) @@ -646,7 +618,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 +630,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 +715,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 +730,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; @@ -961,41 +907,6 @@ late_initcall(bpf_ksym_iter_register);  #endif /* CONFIG_BPF_SYSCALL */ -static inline int kallsyms_for_perf(void) -{ -#ifdef CONFIG_PERF_EVENTS -	extern int sysctl_perf_event_paranoid; -	if (sysctl_perf_event_paranoid <= 1) -		return 1; -#endif -	return 0; -} - -/* - * We show kallsyms information even to normal users if we've enabled - * kernel profiling and are explicitly not paranoid (so kptr_restrict - * is clear, and sysctl_perf_event_paranoid isn't set). - * - * Otherwise, require CAP_SYSLOG (assuming kptr_restrict isn't set to - * block even that). - */ -bool kallsyms_show_value(const struct cred *cred) -{ -	switch (kptr_restrict) { -	case 0: -		if (kallsyms_for_perf()) -			return true; -		fallthrough; -	case 1: -		if (security_capable(cred, &init_user_ns, CAP_SYSLOG, -				     CAP_OPT_NOAUDIT) == 0) -			return true; -		fallthrough; -	default: -		return false; -	} -} -  static int kallsyms_open(struct inode *inode, struct file *file)  {  	/*  |