diff options
Diffstat (limited to 'kernel/panic.c')
| -rw-r--r-- | kernel/panic.c | 53 | 
1 files changed, 25 insertions, 28 deletions
diff --git a/kernel/panic.c b/kernel/panic.c index e6480e20379e..c51edaa04fce 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -298,30 +298,27 @@ void panic(const char *fmt, ...)  EXPORT_SYMBOL(panic); - -struct tnt { -	u8	bit; -	char	true; -	char	false; -}; - -static const struct tnt tnts[] = { -	{ TAINT_PROPRIETARY_MODULE,	'P', 'G' }, -	{ TAINT_FORCED_MODULE,		'F', ' ' }, -	{ TAINT_CPU_OUT_OF_SPEC,	'S', ' ' }, -	{ TAINT_FORCED_RMMOD,		'R', ' ' }, -	{ TAINT_MACHINE_CHECK,		'M', ' ' }, -	{ TAINT_BAD_PAGE,		'B', ' ' }, -	{ TAINT_USER,			'U', ' ' }, -	{ TAINT_DIE,			'D', ' ' }, -	{ TAINT_OVERRIDDEN_ACPI_TABLE,	'A', ' ' }, -	{ TAINT_WARN,			'W', ' ' }, -	{ TAINT_CRAP,			'C', ' ' }, -	{ TAINT_FIRMWARE_WORKAROUND,	'I', ' ' }, -	{ TAINT_OOT_MODULE,		'O', ' ' }, -	{ TAINT_UNSIGNED_MODULE,	'E', ' ' }, -	{ TAINT_SOFTLOCKUP,		'L', ' ' }, -	{ TAINT_LIVEPATCH,		'K', ' ' }, +/* + * TAINT_FORCED_RMMOD could be a per-module flag but the module + * is being removed anyway. + */ +const struct taint_flag taint_flags[TAINT_FLAGS_COUNT] = { +	{ 'P', 'G', true },	/* TAINT_PROPRIETARY_MODULE */ +	{ 'F', ' ', true },	/* TAINT_FORCED_MODULE */ +	{ 'S', ' ', false },	/* TAINT_CPU_OUT_OF_SPEC */ +	{ 'R', ' ', false },	/* TAINT_FORCED_RMMOD */ +	{ 'M', ' ', false },	/* TAINT_MACHINE_CHECK */ +	{ 'B', ' ', false },	/* TAINT_BAD_PAGE */ +	{ 'U', ' ', false },	/* TAINT_USER */ +	{ 'D', ' ', false },	/* TAINT_DIE */ +	{ 'A', ' ', false },	/* TAINT_OVERRIDDEN_ACPI_TABLE */ +	{ 'W', ' ', false },	/* TAINT_WARN */ +	{ 'C', ' ', true },	/* TAINT_CRAP */ +	{ 'I', ' ', false },	/* TAINT_FIRMWARE_WORKAROUND */ +	{ 'O', ' ', true },	/* TAINT_OOT_MODULE */ +	{ 'E', ' ', true },	/* TAINT_UNSIGNED_MODULE */ +	{ 'L', ' ', false },	/* TAINT_SOFTLOCKUP */ +	{ 'K', ' ', true },	/* TAINT_LIVEPATCH */  };  /** @@ -348,16 +345,16 @@ static const struct tnt tnts[] = {   */  const char *print_tainted(void)  { -	static char buf[ARRAY_SIZE(tnts) + sizeof("Tainted: ")]; +	static char buf[TAINT_FLAGS_COUNT + sizeof("Tainted: ")];  	if (tainted_mask) {  		char *s;  		int i;  		s = buf + sprintf(buf, "Tainted: "); -		for (i = 0; i < ARRAY_SIZE(tnts); i++) { -			const struct tnt *t = &tnts[i]; -			*s++ = test_bit(t->bit, &tainted_mask) ? +		for (i = 0; i < TAINT_FLAGS_COUNT; i++) { +			const struct taint_flag *t = &taint_flags[i]; +			*s++ = test_bit(i, &tainted_mask) ?  					t->true : t->false;  		}  		*s = 0;  |