[PATCH][2.5] Add TAINT_UNKNOWN_STATE

From: Zwane Mwaikambo (zwane@holomorphy.com)
Date: Thu Nov 21 2002 - 02:55:44 EST


Hi,
        I've come across some bugs on my test rig where the oops didn't
make any sense at all, after trawling through a couple of megs of debug
output in the logs i came across the previous oops... This is only after
spending a considerable amount of time trying to make sense of a useless
oops. I also think this would be of use when handling general bug
reports, this way we'd be able to determine wether the system was in an
uknown state when the oops was dumped, and perhaps try and get further
information from the bug reporter.

        Zwane

Index: linux-2.5.48/include/linux/kernel.h
===================================================================
RCS file: /build/cvsroot/linux-2.5.48/include/linux/kernel.h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 kernel.h
--- linux-2.5.48/include/linux/kernel.h 18 Nov 2002 05:11:13 -0000 1.1.1.1
+++ linux-2.5.48/include/linux/kernel.h 20 Nov 2002 06:29:39 -0000
@@ -103,6 +103,7 @@
 #define TAINT_FORCED_MODULE (1<<1)
 #define TAINT_UNSAFE_SMP (1<<2)
 #define TAINT_FORCED_RMMOD (1<<3)
+#define TAINT_UNKNOWN_STATE (1<<4)
 
 extern void dump_stack(void);
 
Index: linux-2.5.48/kernel/panic.c
===================================================================
RCS file: /build/cvsroot/linux-2.5.48/kernel/panic.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 panic.c
--- linux-2.5.48/kernel/panic.c 18 Nov 2002 05:13:12 -0000 1.1.1.1
+++ linux-2.5.48/kernel/panic.c 21 Nov 2002 07:30:10 -0000
@@ -114,10 +114,11 @@
 {
         static char buf[20];
         if (tainted) {
- snprintf(buf, sizeof(buf), "Tainted: %c%c%c",
+ snprintf(buf, sizeof(buf), "Tainted: %c%c%c%c",
                         tainted & TAINT_PROPRIETORY_MODULE ? 'P' : 'G',
                         tainted & TAINT_FORCED_MODULE ? 'F' : ' ',
- tainted & TAINT_UNSAFE_SMP ? 'S' : ' ');
+ tainted & TAINT_UNSAFE_SMP ? 'S' : ' ',
+ tainted & TAINT_UNKNOWN_STATE ? 'U' : ' ');
         }
         else
                 snprintf(buf, sizeof(buf), "Not tainted");
Index: linux-2.5.48/arch/i386/mm/fault.c
===================================================================
RCS file: /build/cvsroot/linux-2.5.48/arch/i386/mm/fault.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 fault.c
--- linux-2.5.48/arch/i386/mm/fault.c 18 Nov 2002 05:11:52 -0000 1.1.1.1
+++ linux-2.5.48/arch/i386/mm/fault.c 21 Nov 2002 06:46:43 -0000
@@ -135,6 +135,7 @@
         console_loglevel = 15; /* NMI oopser may have shut the console up */
         printk(" ");
         console_loglevel = loglevel_save;
+ tainted |= TAINT_UNKNOWN_STATE; /* flag that we've gone through one oops 'U' */
 }
 
 asmlinkage void do_invalid_op(struct pt_regs *, unsigned long);

-- 
function.linuxpower.ca

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Nov 23 2002 - 22:00:35 EST