Messages in this thread Patch in this message | | | Date | Wed, 29 May 2013 18:07:02 +0800 | From | Chen Gang <> | Subject | [PATCH] arch: blackfin: kernel: memory overflow, 'namebuf' length need be more than 256 |
| |
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@asianux.com> --- 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
| |