mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 16:29:59 +00:00
Blackfin: make sure stack is accessible before dumping it
When displaying a crash dump, make sure accessing the stack is safe so we don't crash at the same time. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
b9a3899d59
commit
a0cab65642
1 changed files with 11 additions and 0 deletions
|
@ -196,6 +196,11 @@ static void decode_address(char *buf, unsigned long address)
|
|||
|
||||
asmlinkage void double_fault_c(struct pt_regs *fp)
|
||||
{
|
||||
#ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON
|
||||
int j;
|
||||
trace_buffer_save(j);
|
||||
#endif
|
||||
|
||||
console_verbose();
|
||||
oops_in_progress = 1;
|
||||
#ifdef CONFIG_DEBUG_VERBOSE
|
||||
|
@ -220,6 +225,7 @@ asmlinkage void double_fault_c(struct pt_regs *fp)
|
|||
dump_bfin_process(fp);
|
||||
dump_bfin_mem(fp);
|
||||
show_regs(fp);
|
||||
dump_bfin_trace_buffer();
|
||||
}
|
||||
#endif
|
||||
panic("Double Fault - unrecoverable event");
|
||||
|
@ -832,6 +838,11 @@ void show_stack(struct task_struct *task, unsigned long *stack)
|
|||
decode_address(buf, (unsigned int)stack);
|
||||
printk(KERN_NOTICE " SP: [0x%p] %s\n", stack, buf);
|
||||
|
||||
if (!access_ok(VERIFY_READ, stack, (unsigned int)endstack - (unsigned int)stack)) {
|
||||
printk(KERN_NOTICE "Invalid stack pointer\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* First thing is to look for a frame pointer */
|
||||
for (addr = (unsigned int *)((unsigned int)stack & ~0xF); addr < endstack; addr++) {
|
||||
if (*addr & 0x1)
|
||||
|
|
Loading…
Reference in a new issue