Blackfin: don't walk VMAs when oopsing
authorRobin Getz <robin.getz@analog.com>
Thu, 5 Nov 2009 15:44:44 +0000 (15:44 +0000)
committerMike Frysinger <vapier@gentoo.org>
Tue, 15 Dec 2009 05:15:28 +0000 (00:15 -0500)
If we're double faulting, then we have to assume the VMAs are not safe as
broken pointers here will prevent full trace output for the double fault.
Shouldn't be a big problem though as rarely is a double fault caused by
code in userspace.

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
arch/blackfin/kernel/traps.c

index 89835ac58a8a266c4a88b378245f55887b0d5620..427294c47f1b19ff1c1ef308b5184a62d973082b 100644 (file)
@@ -119,6 +119,15 @@ static void decode_address(char *buf, unsigned long address)
                return;
        }
 
+       /*
+        * Don't walk any of the vmas if we are oopsing, it has been known
+        * to cause problems - corrupt vmas (kernel crashes) cause double faults
+        */
+       if (oops_in_progress) {
+               strcat(buf, "/* kernel dynamic memory (maybe user-space) */");
+               return;
+       }
+
        /* looks like we're off in user-land, so let's walk all the
         * mappings of all our processes and see if we can't be a whee
         * bit more specific