Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b3279c7fd7acf807ab8395d16658514e8c222a37
Commit:     b3279c7fd7acf807ab8395d16658514e8c222a37
Parent:     35f3266ffbee7ff8ca0474dc8dfa3b73d5a1d1ef
Author:     Harvey Harrison <[EMAIL PROTECTED]>
AuthorDate: Wed Jan 30 13:34:10 2008 +0100
Committer:  Ingo Molnar <[EMAIL PROTECTED]>
CommitDate: Wed Jan 30 13:34:10 2008 +0100

    x86: introduce show_fault_oops helper to fault_32|64.c
    
    This will help when unifying the oops dumping code on 32/64
    bit.  No functional changes.
    
    Signed-off-by: Harvey Harrison <[EMAIL PROTECTED]>
    Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
    Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>
---
 arch/x86/mm/fault_32.c |   54 ++++++++++++++++++++++++++---------------------
 arch/x86/mm/fault_64.c |   21 ++++++++++++------
 2 files changed, 44 insertions(+), 31 deletions(-)

diff --git a/arch/x86/mm/fault_32.c b/arch/x86/mm/fault_32.c
index 0bd2417..fda3997 100644
--- a/arch/x86/mm/fault_32.c
+++ b/arch/x86/mm/fault_32.c
@@ -323,6 +323,35 @@ static int is_f00f_bug(struct pt_regs *regs, unsigned long 
address)
        return 0;
 }
 
+static void show_fault_oops(struct pt_regs *regs, unsigned long error_code,
+                           unsigned long address)
+{
+       if (!oops_may_print())
+               return;
+
+#ifdef CONFIG_X86_PAE
+       if (error_code & PF_INSTR) {
+               int level;
+               pte_t *pte = lookup_address(address, &level);
+
+               if (pte && pte_present(*pte) && !pte_exec(*pte))
+                       printk(KERN_CRIT "kernel tried to execute "
+                               "NX-protected page - exploit attempt? "
+                               "(uid: %d)\n", current->uid);
+       }
+#endif
+       if (address < PAGE_SIZE)
+               printk(KERN_ALERT "BUG: unable to handle kernel NULL "
+                               "pointer dereference");
+       else
+               printk(KERN_ALERT "BUG: unable to handle kernel paging"
+                               " request");
+       printk(" at virtual address %08lx\n", address);
+       printk(KERN_ALERT "printing ip: %08lx ", regs->ip);
+
+       dump_pagetable(address);
+}
+
 /*
  * Handle a fault on the vmalloc or module mapping area
  *
@@ -633,30 +662,7 @@ no_context:
 
        bust_spinlocks(1);
 
-       if (oops_may_print()) {
-
-#ifdef CONFIG_X86_PAE
-               if (error_code & PF_INSTR) {
-                       int level;
-                       pte_t *pte = lookup_address(address, &level);
-
-                       if (pte && pte_present(*pte) && !pte_exec(*pte))
-                               printk(KERN_CRIT "kernel tried to execute "
-                                       "NX-protected page - exploit attempt? "
-                                       "(uid: %d)\n", current->uid);
-               }
-#endif
-               if (address < PAGE_SIZE)
-                       printk(KERN_ALERT "BUG: unable to handle kernel NULL "
-                                       "pointer dereference");
-               else
-                       printk(KERN_ALERT "BUG: unable to handle kernel paging"
-                                       " request");
-               printk(" at virtual address %08lx\n", address);
-               printk(KERN_ALERT "printing ip: %08lx ", regs->ip);
-
-               dump_pagetable(address);
-       }
+       show_fault_oops(regs, error_code, address);
 
        tsk->thread.cr2 = address;
        tsk->thread.trap_no = 14;
diff --git a/arch/x86/mm/fault_64.c b/arch/x86/mm/fault_64.c
index ccbb8e3..1897704 100644
--- a/arch/x86/mm/fault_64.c
+++ b/arch/x86/mm/fault_64.c
@@ -293,6 +293,18 @@ static int is_f00f_bug(struct pt_regs *regs, unsigned long 
address)
        return 0;
 }
 
+static void show_fault_oops(struct pt_regs *regs, unsigned long error_code,
+                           unsigned long address)
+{
+       if (address < PAGE_SIZE)
+               printk(KERN_ALERT "Unable to handle kernel NULL pointer 
dereference");
+       else
+               printk(KERN_ALERT "Unable to handle kernel paging request");
+       printk(" at %016lx RIP: \n" KERN_ALERT, address);
+       printk_address(regs->ip, 1);
+       dump_pagetable(address);
+}
+
 static noinline void pgtable_bad(unsigned long address, struct pt_regs *regs,
                                 unsigned long error_code)
 {
@@ -636,13 +648,8 @@ no_context:
 
        flags = oops_begin();
 
-       if (address < PAGE_SIZE)
-               printk(KERN_ALERT "Unable to handle kernel NULL pointer 
dereference");
-       else
-               printk(KERN_ALERT "Unable to handle kernel paging request");
-       printk(" at %016lx RIP: \n" KERN_ALERT, address);
-       printk_address(regs->ip, 1);
-       dump_pagetable(address);
+       show_fault_oops(regs, error_code, address);
+
        tsk->thread.cr2 = address;
        tsk->thread.trap_no = 14;
        tsk->thread.error_code = error_code;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to