|
@@ -413,6 +413,7 @@ static noinline void pgtable_bad(unsigned long address, struct pt_regs *regs,
|
|
|
unsigned long error_code)
|
|
|
{
|
|
|
unsigned long flags = oops_begin();
|
|
|
+ int sig = SIGKILL;
|
|
|
struct task_struct *tsk;
|
|
|
|
|
|
printk(KERN_ALERT "%s: Corrupted page table at address %lx\n",
|
|
@@ -423,8 +424,8 @@ static noinline void pgtable_bad(unsigned long address, struct pt_regs *regs,
|
|
|
tsk->thread.trap_no = 14;
|
|
|
tsk->thread.error_code = error_code;
|
|
|
if (__die("Bad pagetable", regs, error_code))
|
|
|
- regs = NULL;
|
|
|
- oops_end(flags, regs, SIGKILL);
|
|
|
+ sig = 0;
|
|
|
+ oops_end(flags, regs, sig);
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -590,6 +591,7 @@ void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code)
|
|
|
int fault;
|
|
|
#ifdef CONFIG_X86_64
|
|
|
unsigned long flags;
|
|
|
+ int sig;
|
|
|
#endif
|
|
|
|
|
|
tsk = current;
|
|
@@ -849,11 +851,12 @@ no_context:
|
|
|
bust_spinlocks(0);
|
|
|
do_exit(SIGKILL);
|
|
|
#else
|
|
|
+ sig = SIGKILL;
|
|
|
if (__die("Oops", regs, error_code))
|
|
|
- regs = NULL;
|
|
|
+ sig = 0;
|
|
|
/* Executive summary in case the body of the oops scrolled away */
|
|
|
printk(KERN_EMERG "CR2: %016lx\n", address);
|
|
|
- oops_end(flags, regs, SIGKILL);
|
|
|
+ oops_end(flags, regs, sig);
|
|
|
#endif
|
|
|
|
|
|
/*
|