diff options
author | Seth Jennings <sjenning@redhat.com> | 2014-12-16 12:58:18 -0500 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2014-12-22 09:40:48 -0500 |
commit | c5f4546593e9911800f0926c1090959b58bc5c93 (patch) | |
tree | 62867df3a453f6aa07bbb39f26659f0d9d430dd4 | |
parent | 97bf6af1f928216fd6c5a66e8a57bfa95a659672 (diff) |
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: 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>
-rw-r--r-- | Documentation/oops-tracing.txt | 2 | ||||
-rw-r--r-- | Documentation/sysctl/kernel.txt | 1 | ||||
-rw-r--r-- | include/linux/kernel.h | 1 | ||||
-rw-r--r-- | kernel/panic.c | 2 |
4 files changed, 6 insertions, 0 deletions
diff --git a/Documentation/oops-tracing.txt b/Documentation/oops-tracing.txt index beefb9f82902..f3ac05cc23e4 100644 --- a/Documentation/oops-tracing.txt +++ b/Documentation/oops-tracing.txt | |||
@@ -270,6 +270,8 @@ characters, each representing a particular tainted value. | |||
270 | 270 | ||
271 | 15: 'L' if a soft lockup has previously occurred on the system. | 271 | 15: 'L' if a soft lockup has previously occurred on the system. |
272 | 272 | ||
273 | 16: 'K' if the kernel has been live patched. | ||
274 | |||
273 | The primary reason for the 'Tainted: ' string is to tell kernel | 275 | The primary reason for the 'Tainted: ' string is to tell kernel |
274 | debuggers if this is a clean kernel or if anything unusual has | 276 | debuggers if this is a clean kernel or if anything unusual has |
275 | occurred. Tainting is permanent: even if an offending module is | 277 | occurred. Tainting is permanent: even if an offending module is |
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index 75511efefc64..83ab25660fc9 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt | |||
@@ -843,6 +843,7 @@ can be ORed together: | |||
843 | 8192 - An unsigned module has been loaded in a kernel supporting module | 843 | 8192 - An unsigned module has been loaded in a kernel supporting module |
844 | signature. | 844 | signature. |
845 | 16384 - A soft lockup has previously occurred on the system. | 845 | 16384 - A soft lockup has previously occurred on the system. |
846 | 32768 - The kernel has been live patched. | ||
846 | 847 | ||
847 | ============================================================== | 848 | ============================================================== |
848 | 849 | ||
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 5449d2f4a1ef..d03e3deee091 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
@@ -471,6 +471,7 @@ extern enum system_states { | |||
471 | #define TAINT_OOT_MODULE 12 | 471 | #define TAINT_OOT_MODULE 12 |
472 | #define TAINT_UNSIGNED_MODULE 13 | 472 | #define TAINT_UNSIGNED_MODULE 13 |
473 | #define TAINT_SOFTLOCKUP 14 | 473 | #define TAINT_SOFTLOCKUP 14 |
474 | #define TAINT_LIVEPATCH 15 | ||
474 | 475 | ||
475 | extern const char hex_asc[]; | 476 | extern const char hex_asc[]; |
476 | #define hex_asc_lo(x) hex_asc[((x) & 0x0f)] | 477 | #define hex_asc_lo(x) hex_asc[((x) & 0x0f)] |
diff --git a/kernel/panic.c b/kernel/panic.c index 4d8d6f906dec..8136ad76e5fd 100644 --- a/kernel/panic.c +++ b/kernel/panic.c | |||
@@ -226,6 +226,7 @@ static const struct tnt tnts[] = { | |||
226 | { TAINT_OOT_MODULE, 'O', ' ' }, | 226 | { TAINT_OOT_MODULE, 'O', ' ' }, |
227 | { TAINT_UNSIGNED_MODULE, 'E', ' ' }, | 227 | { TAINT_UNSIGNED_MODULE, 'E', ' ' }, |
228 | { TAINT_SOFTLOCKUP, 'L', ' ' }, | 228 | { TAINT_SOFTLOCKUP, 'L', ' ' }, |
229 | { TAINT_LIVEPATCH, 'K', ' ' }, | ||
229 | }; | 230 | }; |
230 | 231 | ||
231 | /** | 232 | /** |
@@ -246,6 +247,7 @@ static const struct tnt tnts[] = { | |||
246 | * 'O' - Out-of-tree module has been loaded. | 247 | * 'O' - Out-of-tree module has been loaded. |
247 | * 'E' - Unsigned module has been loaded. | 248 | * 'E' - Unsigned module has been loaded. |
248 | * 'L' - A soft lockup has previously occurred. | 249 | * 'L' - A soft lockup has previously occurred. |
250 | * 'K' - Kernel has been live patched. | ||
249 | * | 251 | * |
250 | * The string is overwritten by the next call to print_tainted(). | 252 | * The string is overwritten by the next call to print_tainted(). |
251 | */ | 253 | */ |