x86: Shrink some ifdefs in fault.c
PATCH 1/2 x86: Shrink some ifdefs in fault.c
The change from current to tsk in do_page_fault is safe as this is set at the very beginning of the function.
Removes a likely() annotation from the X86_64 version, this could have instead been added to X86_32.
Signed-off-by Harvey Harrison <[email protected]>
--- arch/x86/mm/fault.c | 43 ++++++++++++++----------------------------- 1 files changed, 14 insertions(+), 29 deletions(-)
arch/x86/mm/fault.c +14 -29
@@ -383,6 +383,7 @@ static void show_fault_oops(struct pt_regs *regs, unsigned long error_code,#ifdef CONFIG_X86_32 if (!oops_may_print ())return ; +#endif #ifdef CONFIG_X86_PAE if (error_code &PF_INSTR ) {
@@ -395,28 +396,20 @@ static void show_fault_oops(struct pt_regs *regs, unsigned long error_code, "(uid: %d)\n", current->uid); }#endif -printk (KERN_ALERT "BUG: unable to handle kernel " ); -if (address <PAGE_SIZE ) -printk (KERN_CONT "NULL pointer dereference" ); -else -printk (KERN_CONT "paging request" ); -printk (KERN_CONT " at %08lx\n" , address); -printk (KERN_ALERT "IP:" ); -printk_address (regs->ip,1 ); -dump_pagetable (address); -#else /* CONFIG_X86_64 */ printk (KERN_ALERT "BUG: unable to handle kernel " );if (address <PAGE_SIZE )printk (KERN_CONT "NULL pointer dereference" );else printk (KERN_CONT "paging request" ); +#ifdef CONFIG_X86_32 +printk (KERN_CONT " at %08lx\n" , address); +#else printk (KERN_CONT " at %016lx\n" , address); - +#endif printk (KERN_ALERT "IP:" );printk_address (regs->ip,1 );dump_pagetable (address); -#endif }#ifdef CONFIG_X86_64
@@ -655,11 +648,7 @@ again: vma =find_vma (mm, address);if (!vma) goto bad_area; -#ifdef CONFIG_X86_32 if (vma->vm_start <= address) -#else - if (likely(vma->vm_start <= address)) -#endif goto good_area;if (!(vma->vm_flags &VM_GROWSDOWN )) goto bad_area;
@@ -808,23 +797,21 @@ no_context:*/ #ifdef CONFIG_X86_32 bust_spinlocks (1 ); +#else + flags =oops_begin (); +#endif show_fault_oops (regs, error_code, address); tsk->thread.cr2 = address; tsk->thread.trap_no =14 ; tsk->thread.error_code = error_code; + +#ifdef CONFIG_X86_32 die ("Oops" , regs, error_code);bust_spinlocks (0 );do_exit (SIGKILL ); -#else /* CONFIG_X86_64 */ - flags =oops_begin (); - -show_fault_oops (regs, error_code, address); - - tsk->thread.cr2 = address; - tsk->thread.trap_no =14 ; - tsk->thread.error_code = error_code; +#else if (__die ("Oops" , regs, error_code)) regs =NULL ;/* Executive summary in case the body of the oops scrolled away */
@@ -838,18 +825,16 @@ no_context:*/ out_of_memory:up_read (&mm->mmap_sem); -#ifdef CONFIG_X86_32 if (is_global_init (tsk)) {yield (); +#ifdef CONFIG_X86_32 down_read (&mm->mmap_sem); goto survive; - }#else -if (is_global_init (current)) { -yield (); goto again; - }#endif + } +printk ("VM: killing process %s\n" , tsk->comm);if (error_code &PF_USER )do_group_exit (SIGKILL );
Signature · 1 line
1.5.4.rc4.1130.g9ad85