* [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.