Commit a9ece53c authored by Paul Mundt's avatar Paul Mundt Committed by Linus Torvalds

kallsyms: fix segfault in prefix_underscores_count()

Commit b478b782 "kallsyms, tracing: output
more proper symbol name" introduces a "bugfix" that introduces a segfault
in kallsyms in my configurations.

The cause is the introduction of prefix_underscores_count() which attempts
to count underscores, even in symbols that do not have them.  As a result,
it just uselessly runs past the end of the buffer until it crashes:

  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1
  KSYM    .tmp_kallsyms1.S
/bin/sh: line 1: 16934 Done                    sh-linux-gnu-nm -n .tmp_vmlinux1
     16935 Segmentation fault      | scripts/kallsyms > .tmp_kallsyms1.S
make: *** [.tmp_kallsyms1.S] Error 139

This simplifies the logic and just does a straightforward count.
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
Reviewed-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Paulo Marques <pmarques@grupopie.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: <stable@kernel.org>		[2.6.30.x, 2.6.31.x]
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 1f10206c
...@@ -585,7 +585,7 @@ static int prefix_underscores_count(const char *str) ...@@ -585,7 +585,7 @@ static int prefix_underscores_count(const char *str)
{ {
const char *tail = str; const char *tail = str;
while (*tail != '_') while (*tail == '_')
tail++; tail++;
return tail - str; return tail - str;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment