VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / arch / alpha / kernel / traps.c
index 5234879..2248735 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/smp_lock.h>
 #include <linux/module.h>
 #include <linux/init.h>
+#include <linux/kallsyms.h>
 
 #include <asm/gentrap.h>
 #include <asm/uaccess.h>
@@ -119,7 +120,7 @@ static void
 dik_show_trace(unsigned long *sp)
 {
        long i = 0;
-       printk("Trace:");
+       printk("Trace:\n");
        while (0x1ff8 & (unsigned long) sp) {
                extern char _stext[], _etext[];
                unsigned long tmp = *sp;
@@ -128,7 +129,9 @@ dik_show_trace(unsigned long *sp)
                        continue;
                if (tmp >= (unsigned long) &_etext)
                        continue;
-               printk("%lx%c", tmp, ' ');
+               printk("[<%lx>]", tmp);
+               print_symbol(" %s", tmp);
+               printk("\n");
                if (i > 40) {
                        printk(" ...");
                        break;
@@ -220,12 +223,12 @@ do_entArith(unsigned long summary, unsigned long write_mask,
                if (si_code == 0)
                        return;
        }
-       die_if_kernel("Arithmetic fault", regs, 0, 0);
+       die_if_kernel("Arithmetic fault", regs, 0, NULL);
 
        info.si_signo = SIGFPE;
        info.si_errno = 0;
        info.si_code = si_code;
-       info.si_addr = (void *) regs->pc;
+       info.si_addr = (void __user *) regs->pc;
        send_sig_info(SIGFPE, &info, current);
 }
 
@@ -244,7 +247,7 @@ do_entIF(unsigned long type, struct pt_regs *regs)
                               data[0]);
                }
                die_if_kernel((type == 1 ? "Kernel Bug" : "Instruction fault"),
-                             regs, type, 0);
+                             regs, type, NULL);
        }
 
        switch (type) {
@@ -253,7 +256,7 @@ do_entIF(unsigned long type, struct pt_regs *regs)
                info.si_errno = 0;
                info.si_code = TRAP_BRKPT;
                info.si_trapno = 0;
-               info.si_addr = (void *) regs->pc;
+               info.si_addr = (void __user *) regs->pc;
 
                if (ptrace_cancel_bpt(current)) {
                        regs->pc -= 4;  /* make pc point to former bpt */
@@ -266,13 +269,13 @@ do_entIF(unsigned long type, struct pt_regs *regs)
                info.si_signo = SIGTRAP;
                info.si_errno = 0;
                info.si_code = __SI_FAULT;
-               info.si_addr = (void *) regs->pc;
+               info.si_addr = (void __user *) regs->pc;
                info.si_trapno = 0;
                send_sig_info(SIGTRAP, &info, current);
                return;
                
              case 2: /* gentrap */
-               info.si_addr = (void *) regs->pc;
+               info.si_addr = (void __user *) regs->pc;
                info.si_trapno = regs->r16;
                switch ((long) regs->r16) {
                case GEN_INTOVF:
@@ -334,7 +337,7 @@ do_entIF(unsigned long type, struct pt_regs *regs)
                info.si_signo = signo;
                info.si_errno = 0;
                info.si_code = code;
-               info.si_addr = (void *) regs->pc;
+               info.si_addr = (void __user *) regs->pc;
                send_sig_info(signo, &info, current);
                return;
 
@@ -362,7 +365,7 @@ do_entIF(unsigned long type, struct pt_regs *regs)
                                info.si_signo = SIGFPE;
                                info.si_errno = 0;
                                info.si_code = si_code;
-                               info.si_addr = (void *) regs->pc;
+                               info.si_addr = (void __user *) regs->pc;
                                send_sig_info(SIGFPE, &info, current);
                                return;
                        }
@@ -391,7 +394,7 @@ do_entIF(unsigned long type, struct pt_regs *regs)
        info.si_signo = SIGILL;
        info.si_errno = 0;
        info.si_code = ILL_ILLOPC;
-       info.si_addr = (void *) regs->pc;
+       info.si_addr = (void __user *) regs->pc;
        send_sig_info(SIGILL, &info, current);
 }
 
@@ -407,12 +410,12 @@ do_entDbg(struct pt_regs *regs)
 {
        siginfo_t info;
 
-       die_if_kernel("Instruction fault", regs, 0, 0);
+       die_if_kernel("Instruction fault", regs, 0, NULL);
 
        info.si_signo = SIGILL;
        info.si_errno = 0;
        info.si_code = ILL_ILLOPC;
-       info.si_addr = (void *) regs->pc;
+       info.si_addr = (void __user *) regs->pc;
        force_sig_info(SIGILL, &info, current);
 }
 
@@ -762,7 +765,7 @@ static int unauser_reg_offsets[32] = {
 #undef R
 
 asmlinkage void
-do_entUnaUser(void * va, unsigned long opcode,
+do_entUnaUser(void __user * va, unsigned long opcode,
              unsigned long reg, struct pt_regs *regs)
 {
        static int cnt = 0;