From 3d7986b6c5ca1de28abad005c435c27383f71572 Mon Sep 17 00:00:00 2001 From: Hugh Dickins Date: Wed, 19 Nov 2008 15:36:36 -0800 Subject: [PATCH] --- yaml --- r: 119191 b: refs/heads/master c: 966c8c12dc9e77f931e2281ba25d2f0244b06949 h: refs/heads/master i: 119189: bae05abc64858be509cc8f3a3baf48d738bdac73 119187: 0d7f9ad20647eb00417919bcc4c94b7d05ac6dc2 119183: 558e7599cfc15da99c8b5b104fb27acf2d1b94df v: v3 --- [refs] | 2 +- trunk/kernel/kallsyms.c | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 8c915909c7f1..94d1dac83e91 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3fa59dfbc3b223f02c26593be69ce6fc9a940405 +refs/heads/master: 966c8c12dc9e77f931e2281ba25d2f0244b06949 diff --git a/trunk/kernel/kallsyms.c b/trunk/kernel/kallsyms.c index 5072cf1685a2..7b8b0f21a5b1 100644 --- a/trunk/kernel/kallsyms.c +++ b/trunk/kernel/kallsyms.c @@ -304,17 +304,24 @@ int sprint_symbol(char *buffer, unsigned long address) char *modname; const char *name; unsigned long offset, size; - char namebuf[KSYM_NAME_LEN]; + int len; - name = kallsyms_lookup(address, &size, &offset, &modname, namebuf); + name = kallsyms_lookup(address, &size, &offset, &modname, buffer); if (!name) return sprintf(buffer, "0x%lx", address); + if (name != buffer) + strcpy(buffer, name); + len = strlen(buffer); + buffer += len; + if (modname) - return sprintf(buffer, "%s+%#lx/%#lx [%s]", name, offset, - size, modname); + len += sprintf(buffer, "+%#lx/%#lx [%s]", + offset, size, modname); else - return sprintf(buffer, "%s+%#lx/%#lx", name, offset, size); + len += sprintf(buffer, "+%#lx/%#lx", offset, size); + + return len; } /* Look up a kernel symbol and print it to the kernel messages. */