Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -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
+1 −0
Original line number Original line Diff line number Diff line
@@ -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.


==============================================================
==============================================================


+1 −0
Original line number Original line Diff line number Diff line
@@ -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)]
+2 −0
Original line number Original line Diff line number Diff line
@@ -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[] = {
 *  '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().
 */
 */