|
@@ -179,6 +179,12 @@ void show_regs(struct pt_regs *regs)
|
|
|
struct task_struct *tsk = current;
|
|
struct task_struct *tsk = current;
|
|
|
struct callee_regs *cregs;
|
|
struct callee_regs *cregs;
|
|
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ * generic code calls us with preemption disabled, but some calls
|
|
|
|
|
+ * here could sleep, so re-enable to avoid lockdep splat
|
|
|
|
|
+ */
|
|
|
|
|
+ preempt_enable();
|
|
|
|
|
+
|
|
|
print_task_path_n_nm(tsk);
|
|
print_task_path_n_nm(tsk);
|
|
|
show_regs_print_info(KERN_INFO);
|
|
show_regs_print_info(KERN_INFO);
|
|
|
|
|
|
|
@@ -221,6 +227,8 @@ void show_regs(struct pt_regs *regs)
|
|
|
cregs = (struct callee_regs *)current->thread.callee_reg;
|
|
cregs = (struct callee_regs *)current->thread.callee_reg;
|
|
|
if (cregs)
|
|
if (cregs)
|
|
|
show_callee_regs(cregs);
|
|
show_callee_regs(cregs);
|
|
|
|
|
+
|
|
|
|
|
+ preempt_disable();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void show_kernel_fault_diag(const char *str, struct pt_regs *regs,
|
|
void show_kernel_fault_diag(const char *str, struct pt_regs *regs,
|