Commit c5f45465 authored by Seth Jennings's avatar Seth Jennings Committed by Jiri Kosina

livepatch: kernel: add TAINT_LIVEPATCH

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: default avatarSeth Jennings <sjenning@redhat.com>
Acked-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
Reviewed-by: default avatarMiroslav Benes <mbenes@suse.cz>
Reviewed-by: default avatarPetr Mladek <pmladek@suse.cz>
Reviewed-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 97bf6af1
...@@ -270,6 +270,8 @@ characters, each representing a particular tainted value. ...@@ -270,6 +270,8 @@ characters, each representing a particular tainted value.
15: 'L' if a soft lockup has previously occurred on the system. 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 The primary reason for the 'Tainted: ' string is to tell kernel
debuggers if this is a clean kernel or if anything unusual has debuggers if this is a clean kernel or if anything unusual has
occurred. Tainting is permanent: even if an offending module is occurred. Tainting is permanent: even if an offending module is
......
...@@ -843,6 +843,7 @@ can be ORed together: ...@@ -843,6 +843,7 @@ can be ORed together:
8192 - An unsigned module has been loaded in a kernel supporting module 8192 - An unsigned module has been loaded in a kernel supporting module
signature. signature.
16384 - A soft lockup has previously occurred on the system. 16384 - A soft lockup has previously occurred on the system.
32768 - The kernel has been live patched.
============================================================== ==============================================================
......
...@@ -471,6 +471,7 @@ extern enum system_states { ...@@ -471,6 +471,7 @@ extern enum system_states {
#define TAINT_OOT_MODULE 12 #define TAINT_OOT_MODULE 12
#define TAINT_UNSIGNED_MODULE 13 #define TAINT_UNSIGNED_MODULE 13
#define TAINT_SOFTLOCKUP 14 #define TAINT_SOFTLOCKUP 14
#define TAINT_LIVEPATCH 15
extern const char hex_asc[]; extern const char hex_asc[];
#define hex_asc_lo(x) hex_asc[((x) & 0x0f)] #define hex_asc_lo(x) hex_asc[((x) & 0x0f)]
......
...@@ -226,6 +226,7 @@ static const struct tnt tnts[] = { ...@@ -226,6 +226,7 @@ static const struct tnt tnts[] = {
{ TAINT_OOT_MODULE, 'O', ' ' }, { TAINT_OOT_MODULE, 'O', ' ' },
{ TAINT_UNSIGNED_MODULE, 'E', ' ' }, { TAINT_UNSIGNED_MODULE, 'E', ' ' },
{ TAINT_SOFTLOCKUP, 'L', ' ' }, { TAINT_SOFTLOCKUP, 'L', ' ' },
{ TAINT_LIVEPATCH, 'K', ' ' },
}; };
/** /**
...@@ -246,6 +247,7 @@ static const struct tnt tnts[] = { ...@@ -246,6 +247,7 @@ static const struct tnt tnts[] = {
* 'O' - Out-of-tree module has been loaded. * 'O' - Out-of-tree module has been loaded.
* 'E' - Unsigned module has been loaded. * 'E' - Unsigned module has been loaded.
* 'L' - A soft lockup has previously occurred. * 'L' - A soft lockup has previously occurred.
* 'K' - Kernel has been live patched.
* *
* The string is overwritten by the next call to print_tainted(). * The string is overwritten by the next call to print_tainted().
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment