Commit ffb45122766db220d0bf3d01848d575fbbcb6430

Authored by Alexey Dobriyan
Committed by Linus Torvalds
1 parent ea07890a68

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: Alexey Dobriyan <adobriyan@sw.ru>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 10 changed files with 20 additions and 28 deletions Side-by-side Diff

arch/parisc/kernel/unwind.c
... ... @@ -216,11 +216,8 @@
216 216 /* Handle some frequent special cases.... */
217 217 {
218 218 char symname[KSYM_NAME_LEN+1];
219   - char *modname;
220   - unsigned long symsize, offset;
221 219  
222   - kallsyms_lookup(info->ip, &symsize, &offset,
223   - &modname, symname);
  220 + kallsyms_lookup(info->ip, NULL, NULL, NULL, symname);
224 221  
225 222 dbg("info->ip = 0x%lx, name = %s\n", info->ip, symname);
226 223  
arch/powerpc/xmon/xmon.c
... ... @@ -1217,7 +1217,6 @@
1217 1217 {
1218 1218 unsigned long size, offset;
1219 1219 const char *name;
1220   - char *modname;
1221 1220  
1222 1221 *startp = *endp = 0;
1223 1222 if (pc == 0)
... ... @@ -1225,7 +1224,7 @@
1225 1224 if (setjmp(bus_error_jmp) == 0) {
1226 1225 catch_memory_errors = 1;
1227 1226 sync();
1228   - name = kallsyms_lookup(pc, &size, &offset, &modname, tmpstr);
  1227 + name = kallsyms_lookup(pc, &size, &offset, NULL, tmpstr);
1229 1228 if (name != NULL) {
1230 1229 *startp = pc - offset;
1231 1230 *endp = pc - offset + size;
arch/sh64/kernel/unwind.c
... ... @@ -46,15 +46,15 @@
46 46 struct pt_regs *regs)
47 47 {
48 48 const char *sym;
49   - char *modname, namebuf[128];
50   - unsigned long offset, size;
  49 + char namebuf[128];
  50 + unsigned long offset;
51 51 unsigned long prologue = 0;
52 52 unsigned long fp_displacement = 0;
53 53 unsigned long fp_prev = 0;
54 54 unsigned long offset_r14 = 0, offset_r18 = 0;
55 55 int i, found_prologue_end = 0;
56 56  
57   - sym = kallsyms_lookup(pc, &size, &offset, &modname, namebuf);
  57 + sym = kallsyms_lookup(pc, NULL, &offset, NULL, namebuf);
58 58 if (!sym)
59 59 return -EINVAL;
60 60  
... ... @@ -278,14 +278,13 @@
278 278 */
279 279 static int proc_pid_wchan(struct task_struct *task, char *buffer)
280 280 {
281   - char *modname;
282 281 const char *sym_name;
283   - unsigned long wchan, size, offset;
  282 + unsigned long wchan;
284 283 char namebuf[KSYM_NAME_LEN+1];
285 284  
286 285 wchan = get_wchan(task);
287 286  
288   - sym_name = kallsyms_lookup(wchan, &size, &offset, &modname, namebuf);
  287 + sym_name = kallsyms_lookup(wchan, NULL, NULL, NULL, namebuf);
289 288 if (sym_name)
290 289 return sprintf(buffer, "%s", sym_name);
291 290 return sprintf(buffer, "%lu", wchan);
... ... @@ -214,8 +214,10 @@
214 214 symbol_end = (unsigned long)_etext;
215 215 }
216 216  
217   - *symbolsize = symbol_end - symbol_start;
218   - *offset = addr - symbol_start;
  217 + if (symbolsize)
  218 + *symbolsize = symbol_end - symbol_start;
  219 + if (offset)
  220 + *offset = addr - symbol_start;
219 221  
220 222 return low;
221 223 }
... ... @@ -868,13 +868,13 @@
868 868 struct kprobe *p, *kp;
869 869 const char *sym = NULL;
870 870 unsigned int i = *(loff_t *) v;
871   - unsigned long size, offset = 0;
  871 + unsigned long offset = 0;
872 872 char *modname, namebuf[128];
873 873  
874 874 head = &kprobe_table[i];
875 875 preempt_disable();
876 876 hlist_for_each_entry_rcu(p, node, head, hlist) {
877   - sym = kallsyms_lookup((unsigned long)p->addr, &size,
  877 + sym = kallsyms_lookup((unsigned long)p->addr, NULL,
878 878 &offset, &modname, namebuf);
879 879 if (p->pre_handler == aggr_pre_handler) {
880 880 list_for_each_entry_rcu(kp, &p->list, list)
... ... @@ -340,10 +340,7 @@
340 340  
341 341 const char * __get_key_name(struct lockdep_subclass_key *key, char *str)
342 342 {
343   - unsigned long offs, size;
344   - char *modname;
345   -
346   - return kallsyms_lookup((unsigned long)key, &size, &offs, &modname, str);
  343 + return kallsyms_lookup((unsigned long)key, NULL, NULL, NULL, str);
347 344 }
348 345  
349 346 void
... ... @@ -2098,8 +2098,10 @@
2098 2098 if (!best)
2099 2099 return NULL;
2100 2100  
2101   - *size = nextval - mod->symtab[best].st_value;
2102   - *offset = addr - mod->symtab[best].st_value;
  2101 + if (size)
  2102 + *size = nextval - mod->symtab[best].st_value;
  2103 + if (offset)
  2104 + *offset = addr - mod->symtab[best].st_value;
2103 2105 return mod->strtab + mod->symtab[best].st_name;
2104 2106 }
2105 2107  
kernel/time/timer_list.c
... ... @@ -40,11 +40,9 @@
40 40 {
41 41 unsigned long addr = (unsigned long)sym;
42 42 char namebuf[KSYM_NAME_LEN+1];
43   - unsigned long size, offset;
44 43 const char *sym_name;
45   - char *modname;
46 44  
47   - sym_name = kallsyms_lookup(addr, &size, &offset, &modname, namebuf);
  45 + sym_name = kallsyms_lookup(addr, NULL, NULL, NULL, namebuf);
48 46 if (sym_name)
49 47 SEQ_printf(m, "%s", sym_name);
50 48 else
kernel/time/timer_stats.c
... ... @@ -258,11 +258,9 @@
258 258 static void print_name_offset(struct seq_file *m, unsigned long addr)
259 259 {
260 260 char namebuf[KSYM_NAME_LEN+1];
261   - unsigned long size, offset;
262 261 const char *sym_name;
263   - char *modname;
264 262  
265   - sym_name = kallsyms_lookup(addr, &size, &offset, &modname, namebuf);
  263 + sym_name = kallsyms_lookup(addr, NULL, NULL, NULL, namebuf);
266 264 if (sym_name)
267 265 seq_printf(m, "%s", sym_name);
268 266 else