Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Kernel bump from 4.1.3-rt to 4.1.7-rt.
[kvmfornfv.git]
/
kernel
/
arch
/
mips
/
kernel
/
traps.c
diff --git
a/kernel/arch/mips/kernel/traps.c
b/kernel/arch/mips/kernel/traps.c
index
d2d1c19
..
5f5f44e
100644
(file)
--- a/
kernel/arch/mips/kernel/traps.c
+++ b/
kernel/arch/mips/kernel/traps.c
@@
-192,6
+192,7
@@
static void show_stacktrace(struct task_struct *task,
void show_stack(struct task_struct *task, unsigned long *sp)
{
struct pt_regs regs;
void show_stack(struct task_struct *task, unsigned long *sp)
{
struct pt_regs regs;
+ mm_segment_t old_fs = get_fs();
if (sp) {
regs.regs[29] = (unsigned long)sp;
regs.regs[31] = 0;
if (sp) {
regs.regs[29] = (unsigned long)sp;
regs.regs[31] = 0;
@@
-210,7
+211,13
@@
void show_stack(struct task_struct *task, unsigned long *sp)
prepare_frametrace(®s);
}
}
prepare_frametrace(®s);
}
}
+ /*
+ * show_stack() deals exclusively with kernel mode, so be sure to access
+ * the stack in the kernel (not user) address space.
+ */
+ set_fs(KERNEL_DS);
show_stacktrace(task, ®s);
show_stacktrace(task, ®s);
+ set_fs(old_fs);
}
static void show_code(unsigned int __user *pc)
}
static void show_code(unsigned int __user *pc)
@@
-1518,6
+1525,7
@@
asmlinkage void do_mcheck(struct pt_regs *regs)
const int field = 2 * sizeof(unsigned long);
int multi_match = regs->cp0_status & ST0_TS;
enum ctx_state prev_state;
const int field = 2 * sizeof(unsigned long);
int multi_match = regs->cp0_status & ST0_TS;
enum ctx_state prev_state;
+ mm_segment_t old_fs = get_fs();
prev_state = exception_enter();
show_regs(regs);
prev_state = exception_enter();
show_regs(regs);
@@
-1539,8
+1547,13
@@
asmlinkage void do_mcheck(struct pt_regs *regs)
dump_tlb_all();
}
dump_tlb_all();
}
+ if (!user_mode(regs))
+ set_fs(KERNEL_DS);
+
show_code((unsigned int __user *) regs->cp0_epc);
show_code((unsigned int __user *) regs->cp0_epc);
+ set_fs(old_fs);
+
/*
* Some chips may have other causes of machine check (e.g. SB1
* graduation timer)
/*
* Some chips may have other causes of machine check (e.g. SB1
* graduation timer)