All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] x86: Shrink some ifdefs in fault.c
@ 2008-01-25  1:05 Harvey Harrison
  0 siblings, 0 replies; only message in thread
From: Harvey Harrison @ 2008-01-25  1:05 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Thomas Gleixner, H. Peter Anvin, LKML

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 <harvey.harrison@gmail.com>
---
 arch/x86/mm/fault.c |   43 ++++++++++++++-----------------------------
 1 files changed, 14 insertions(+), 29 deletions(-)

diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 14a0c6e..95fe8bf 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -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);
-- 
1.5.4.rc4.1130.g9ad85



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2008-01-25  1:05 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-25  1:05 [PATCH 1/2] x86: Shrink some ifdefs in fault.c Harvey Harrison

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.