livepatch: kernel: add TAINT_LIVEPATCH
authorSeth Jennings <sjenning@redhat.com>
Tue, 16 Dec 2014 17:58:18 +0000 (11:58 -0600)
committerJiri Kosina <jkosina@suse.cz>
Mon, 22 Dec 2014 14:40:48 +0000 (15:40 +0100)
This adds a new taint flag to indicate when the kernel or a kernel
module has been live patched.  This will provide a clean indication in
bug reports that live patching was used.

Additionally, if the crash occurs in a live patched function, the live
patch module will appear beside the patched function in the backtrace.

Signed-off-by: Seth Jennings <sjenning@redhat.com>
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Reviewed-by: Petr Mladek <pmladek@suse.cz>
Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Documentation/oops-tracing.txt
Documentation/sysctl/kernel.txt
include/linux/kernel.h
kernel/panic.c

index beefb9f..f3ac05c 100644 (file)
@@ -270,6 +270,8 @@ characters, each representing a particular tainted value.
 
  15: 'L' if a soft lockup has previously occurred on the system.
 
+ 16: 'K' if the kernel has been live patched.
+
 The primary reason for the 'Tainted: ' string is to tell kernel
 debuggers if this is a clean kernel or if anything unusual has
 occurred.  Tainting is permanent: even if an offending module is
index 75511ef..83ab256 100644 (file)
@@ -843,6 +843,7 @@ can be ORed together:
 8192 - An unsigned module has been loaded in a kernel supporting module
        signature.
 16384 - A soft lockup has previously occurred on the system.
+32768 - The kernel has been live patched.
 
 ==============================================================
 
index 5449d2f..d03e3de 100644 (file)
@@ -471,6 +471,7 @@ extern enum system_states {
 #define TAINT_OOT_MODULE               12
 #define TAINT_UNSIGNED_MODULE          13
 #define TAINT_SOFTLOCKUP               14
+#define TAINT_LIVEPATCH                        15
 
 extern const char hex_asc[];
 #define hex_asc_lo(x)  hex_asc[((x) & 0x0f)]
index 4d8d6f9..8136ad7 100644 (file)
@@ -226,6 +226,7 @@ static const struct tnt tnts[] = {
        { TAINT_OOT_MODULE,             'O', ' ' },
        { TAINT_UNSIGNED_MODULE,        'E', ' ' },
        { TAINT_SOFTLOCKUP,             'L', ' ' },
+       { TAINT_LIVEPATCH,              'K', ' ' },
 };
 
 /**
@@ -246,6 +247,7 @@ static const struct tnt tnts[] = {
  *  'O' - Out-of-tree module has been loaded.
  *  'E' - Unsigned module has been loaded.
  *  'L' - A soft lockup has previously occurred.
+ *  'K' - Kernel has been live patched.
  *
  *     The string is overwritten by the next call to print_tainted().
  */