The 'name' length in decode_address() may be 255, after call d_path() successfully. So for decode_address(), the input 'buf' need be more than 256, or may memory overflow. For simply thinking of, use 'namebuf[512]' instead of 'namebuf[150]' which will pass to decode_address() as input 'buf'. Also better use macro instead of hard code number when processing symbols work. Signed-off-by: Chen Gang <gang.chen@xxxxxxxxxxx> --- arch/blackfin/kernel/trace.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/blackfin/kernel/trace.c b/arch/blackfin/kernel/trace.c index c36efa0..4fecd3e 100644 --- a/arch/blackfin/kernel/trace.c +++ b/arch/blackfin/kernel/trace.c @@ -37,7 +37,7 @@ void decode_address(char *buf, unsigned long address) const char *symname; char *modname; char *delim = ":"; - char namebuf[128]; + char namebuf[KSYM_NAME_LEN]; #endif buf += sprintf(buf, "<0x%08lx> ", address); @@ -845,7 +845,7 @@ void dump_bfin_mem(struct pt_regs *fp) void show_regs(struct pt_regs *fp) { - char buf[150]; + char buf[512]; struct irqaction *action; unsigned int i; unsigned long flags = 0; -- 1.7.7.6 -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html