Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ffb45122 authored by Alexey Dobriyan's avatar Alexey Dobriyan Committed by Linus Torvalds
Browse files

Simplify kallsyms_lookup()



Several kallsyms_lookup() pass dummy arguments but only need, say, module's
name.  Make kallsyms_lookup() accept NULLs where possible.

Also, makes picture clearer about what interfaces are needed for all symbol
resolving business.

Signed-off-by: default avatarAlexey Dobriyan <adobriyan@sw.ru>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Acked-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent ea07890a
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -216,11 +216,8 @@ static void unwind_frame_regs(struct unwind_frame_info *info)
		/* Handle some frequent special cases.... */
		{
			char symname[KSYM_NAME_LEN+1];
			char *modname;
			unsigned long symsize, offset;

			kallsyms_lookup(info->ip, &symsize, &offset,
					&modname, symname);
			kallsyms_lookup(info->ip, NULL, NULL, NULL, symname);

			dbg("info->ip = 0x%lx, name = %s\n", info->ip, symname);

+1 −2
Original line number Diff line number Diff line
@@ -1217,7 +1217,6 @@ static void get_function_bounds(unsigned long pc, unsigned long *startp,
{
	unsigned long size, offset;
	const char *name;
	char *modname;

	*startp = *endp = 0;
	if (pc == 0)
@@ -1225,7 +1224,7 @@ static void get_function_bounds(unsigned long pc, unsigned long *startp,
	if (setjmp(bus_error_jmp) == 0) {
		catch_memory_errors = 1;
		sync();
		name = kallsyms_lookup(pc, &size, &offset, &modname, tmpstr);
		name = kallsyms_lookup(pc, &size, &offset, NULL, tmpstr);
		if (name != NULL) {
			*startp = pc - offset;
			*endp = pc - offset + size;
+3 −3
Original line number Diff line number Diff line
@@ -46,15 +46,15 @@ static int lookup_prev_stack_frame(unsigned long fp, unsigned long pc,
		      struct pt_regs *regs)
{
	const char *sym;
	char *modname, namebuf[128];
	unsigned long offset, size;
	char namebuf[128];
	unsigned long offset;
	unsigned long prologue = 0;
	unsigned long fp_displacement = 0;
	unsigned long fp_prev = 0;
	unsigned long offset_r14 = 0, offset_r18 = 0;
	int i, found_prologue_end = 0;

	sym = kallsyms_lookup(pc, &size, &offset, &modname, namebuf);
	sym = kallsyms_lookup(pc, NULL, &offset, NULL, namebuf);
	if (!sym)
		return -EINVAL;

+2 −3
Original line number Diff line number Diff line
@@ -278,14 +278,13 @@ static int proc_pid_auxv(struct task_struct *task, char *buffer)
 */
static int proc_pid_wchan(struct task_struct *task, char *buffer)
{
	char *modname;
	const char *sym_name;
	unsigned long wchan, size, offset;
	unsigned long wchan;
	char namebuf[KSYM_NAME_LEN+1];

	wchan = get_wchan(task);

	sym_name = kallsyms_lookup(wchan, &size, &offset, &modname, namebuf);
	sym_name = kallsyms_lookup(wchan, NULL, NULL, NULL, namebuf);
	if (sym_name)
		return sprintf(buffer, "%s", sym_name);
	return sprintf(buffer, "%lu", wchan);
+4 −2
Original line number Diff line number Diff line
@@ -214,7 +214,9 @@ static unsigned long get_symbol_pos(unsigned long addr,
			symbol_end = (unsigned long)_etext;
	}

	if (symbolsize)
		*symbolsize = symbol_end - symbol_start;
	if (offset)
		*offset = addr - symbol_start;

	return low;
Loading