X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=arch%2Fia64%2Fmm%2Ffault.c;h=23088bed111ec229c4df3b1315da0e0fce7411a3;hb=839052d27e8db0c1545256fe5827abcd00fb51c5;hp=32f26253c4e8cea6b938e8babdffb96e826e6ac8;hpb=92d15c2ccbb3e31a3fc71ad28fdb55e1319383c0;p=linux-2.6-omap-h63xx.git diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c index 32f26253c4e..23088bed111 100644 --- a/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c @@ -16,7 +16,7 @@ #include #include -extern void die (char *, struct pt_regs *, long); +extern int die(char *, struct pt_regs *, long); #ifdef CONFIG_KPROBES static inline int notify_page_fault(struct pt_regs *regs, int trap) @@ -26,7 +26,7 @@ static inline int notify_page_fault(struct pt_regs *regs, int trap) if (!user_mode(regs)) { /* kprobe_running() needs smp_processor_id() */ preempt_disable(); - if (kprobe_running() && kprobes_fault_handler(regs, trap)) + if (kprobe_running() && kprobe_fault_handler(regs, trap)) ret = 1; preempt_enable(); } @@ -267,14 +267,16 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re else printk(KERN_ALERT "Unable to handle kernel paging request at " "virtual address %016lx\n", address); - die("Oops", regs, isr); + if (die("Oops", regs, isr)) + regs = NULL; bust_spinlocks(0); - do_exit(SIGKILL); + if (regs) + do_exit(SIGKILL); return; out_of_memory: up_read(&mm->mmap_sem); - if (is_init(current)) { + if (is_global_init(current)) { yield(); down_read(&mm->mmap_sem); goto survive;