]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
kernel/panic: initialize taint_flags[] using a macro
authorJani Nikula <jani.nikula@intel.com>
Fri, 31 May 2024 09:04:56 +0000 (12:04 +0300)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 25 Jun 2024 05:25:05 +0000 (22:25 -0700)
Make it easier to extend struct taint_flags in follow-up.

Link: https://lkml.kernel.org/r/8a2498285d37953cfad9dce939ed3abef61051bd.1717146197.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
kernel/panic.c

index f7c0fddfd89adadf87cf4e77df4835757309dea5..21975497bfa4c6eaf48f30ae9d6c8bb4888b8e8e 100644 (file)
@@ -471,32 +471,40 @@ void panic(const char *fmt, ...)
 
 EXPORT_SYMBOL(panic);
 
+#define TAINT_FLAG(taint, _c_true, _c_false, _module)                  \
+       [ TAINT_##taint ] = {                                           \
+               .c_true = _c_true, .c_false = _c_false,                 \
+               .module = _module,                                      \
+       }
+
 /*
  * 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] = {
-       [ TAINT_PROPRIETARY_MODULE ]    = { 'P', 'G', true },
-       [ TAINT_FORCED_MODULE ]         = { 'F', ' ', true },
-       [ TAINT_CPU_OUT_OF_SPEC ]       = { 'S', ' ', false },
-       [ TAINT_FORCED_RMMOD ]          = { 'R', ' ', false },
-       [ TAINT_MACHINE_CHECK ]         = { 'M', ' ', false },
-       [ TAINT_BAD_PAGE ]              = { 'B', ' ', false },
-       [ TAINT_USER ]                  = { 'U', ' ', false },
-       [ TAINT_DIE ]                   = { 'D', ' ', false },
-       [ TAINT_OVERRIDDEN_ACPI_TABLE ] = { 'A', ' ', false },
-       [ TAINT_WARN ]                  = { 'W', ' ', false },
-       [ TAINT_CRAP ]                  = { 'C', ' ', true },
-       [ TAINT_FIRMWARE_WORKAROUND ]   = { 'I', ' ', false },
-       [ TAINT_OOT_MODULE ]            = { 'O', ' ', true },
-       [ TAINT_UNSIGNED_MODULE ]       = { 'E', ' ', true },
-       [ TAINT_SOFTLOCKUP ]            = { 'L', ' ', false },
-       [ TAINT_LIVEPATCH ]             = { 'K', ' ', true },
-       [ TAINT_AUX ]                   = { 'X', ' ', true },
-       [ TAINT_RANDSTRUCT ]            = { 'T', ' ', true },
-       [ TAINT_TEST ]                  = { 'N', ' ', true },
+       TAINT_FLAG(PROPRIETARY_MODULE,          'P', 'G', true),
+       TAINT_FLAG(FORCED_MODULE,               'F', ' ', true),
+       TAINT_FLAG(CPU_OUT_OF_SPEC,             'S', ' ', false),
+       TAINT_FLAG(FORCED_RMMOD,                'R', ' ', false),
+       TAINT_FLAG(MACHINE_CHECK,               'M', ' ', false),
+       TAINT_FLAG(BAD_PAGE,                    'B', ' ', false),
+       TAINT_FLAG(USER,                        'U', ' ', false),
+       TAINT_FLAG(DIE,                         'D', ' ', false),
+       TAINT_FLAG(OVERRIDDEN_ACPI_TABLE,       'A', ' ', false),
+       TAINT_FLAG(WARN,                        'W', ' ', false),
+       TAINT_FLAG(CRAP,                        'C', ' ', true),
+       TAINT_FLAG(FIRMWARE_WORKAROUND,         'I', ' ', false),
+       TAINT_FLAG(OOT_MODULE,                  'O', ' ', true),
+       TAINT_FLAG(UNSIGNED_MODULE,             'E', ' ', true),
+       TAINT_FLAG(SOFTLOCKUP,                  'L', ' ', false),
+       TAINT_FLAG(LIVEPATCH,                   'K', ' ', true),
+       TAINT_FLAG(AUX,                         'X', ' ', true),
+       TAINT_FLAG(RANDSTRUCT,                  'T', ' ', true),
+       TAINT_FLAG(TEST,                        'N', ' ', true),
 };
 
+#undef TAINT_FLAG
+
 static void print_tainted_seq(struct seq_buf *s)
 {
        int i;