[Blackfin] arch: add missing __user marking to ss_sp member of signalstack and a...
[pandora-kernel.git] / arch / blackfin / kernel / traps.c
index c90f168..e8e8f73 100644 (file)
@@ -126,15 +126,13 @@ static void decode_address(char *buf, unsigned long address)
                        struct vm_area_struct *vma = vml->vma;
 
                        if (address >= vma->vm_start && address < vma->vm_end) {
+                               char _tmpbuf[256];
                                char *name = p->comm;
                                struct file *file = vma->vm_file;
-                               if (file) {
-                                       char _tmpbuf[256];
-                                       name = d_path(file->f_dentry,
-                                                     file->f_vfsmnt,
-                                                     _tmpbuf,
-                                                     sizeof(_tmpbuf));
-                               }
+
+                               if (file)
+                                       name = d_path(&file->f_path, _tmpbuf,
+                                                     sizeof(_tmpbuf));
 
                                /* FLAT does not have its text aligned to the start of
                                 * the map while FDPIC ELF does ...
@@ -201,9 +199,9 @@ asmlinkage void trap_c(struct pt_regs *fp)
        /* TODO: check to see if we are in some sort of deferred HWERR
         * that we should be able to recover from, not kernel panic
         */
-       if ((bfin_read_IPEND() & 0xFFC0)
+       if ((bfin_read_IPEND() & 0xFFC0) && (trapnr != VEC_STEP)
 #ifdef CONFIG_KGDB
-               && trapnr != VEC_EXCPT02
+               && (trapnr != VEC_EXCPT02)
 #endif
        ){
                console_verbose();
@@ -497,6 +495,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
                        dump_bfin_trace_buffer();
                show_stack(current, &stack);
                if (oops_in_progress) {
+                       print_modules();
 #ifndef CONFIG_ACCESS_CHECK
                        printk(KERN_EMERG "Please turn on "
                               "CONFIG_ACCESS_CHECK\n");
@@ -507,7 +506,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
 
        info.si_signo = sig;
        info.si_errno = 0;
-       info.si_addr = (void *)fp->pc;
+       info.si_addr = (void __user *)fp->pc;
        force_sig_info(sig, &info, current);
 
        trace_buffer_restore(j);
@@ -648,7 +647,7 @@ void dump_bfin_process(struct pt_regs *fp)
        if (context & 0x0020 && (fp->seqstat & SEQSTAT_EXCAUSE) == VEC_HWERR)
                printk(KERN_NOTICE "HW Error context\n");
        else if (context & 0x0020)
-               printk(KERN_NOTICE "Defered Exception context\n");
+               printk(KERN_NOTICE "Deferred Exception context\n");
        else if (context & 0x3FC0)
                printk(KERN_NOTICE "Interrupt context\n");
        else if (context & 0x4000)
@@ -761,7 +760,7 @@ void show_regs(struct pt_regs *fp)
        unsigned int i;
        unsigned long flags;
 
-       printk(KERN_NOTICE "\n" KERN_NOTICE "SEQUENCER STATUS:\n");
+       printk(KERN_NOTICE "\n" KERN_NOTICE "SEQUENCER STATUS:\t\t%s\n", print_tainted());
        printk(KERN_NOTICE " SEQSTAT: %08lx  IPEND: %04lx  SYSCFG: %04lx\n",
                (long)fp->seqstat, fp->ipend, fp->syscfg);
        printk(KERN_NOTICE "  HWERRCAUSE: 0x%lx\n",