Add the l1tf check
[kconfig-hardened-check.git] / kconfig_hardened_check / __init__.py
index c484b0dc226f438ebbc141f9bc608968505cef31..a926402426c3eba4ba100a9fb0f17b4a81d4bcfa 100644 (file)
@@ -16,8 +16,6 @@
 #    Mitigations of CPU vulnerabilities:
 #       Аrch-independent:
 #       X86:
-#           spec_store_bypass_disable=on
-#           l1tf=full,force
 #           l1d_flush=on (a part of the l1tf option)
 #           mds=full,nosmt
 #           tsx=off
@@ -732,10 +730,17 @@ def add_cmdline_checks(l, arch):
     l += [CmdlineCheck('self_protection', 'defconfig', 'nopti', 'is not set')]
     l += [CmdlineCheck('self_protection', 'defconfig', 'nospectre_v1', 'is not set')]
     l += [CmdlineCheck('self_protection', 'defconfig', 'nospectre_v2', 'is not set')]
+    l += [CmdlineCheck('self_protection', 'defconfig', 'nospec_store_bypass_disable', 'is not set')]
     l += [OR(CmdlineCheck('self_protection', 'defconfig', 'mitigations', 'is not off'),
              CmdlineCheck('self_protection', 'defconfig', 'mitigations', 'is not set'))]
     l += [OR(CmdlineCheck('self_protection', 'defconfig', 'spectre_v2', 'is not off'),
              CmdlineCheck('self_protection', 'defconfig', 'spectre_v2', 'is not set'))]
+    l += [OR(CmdlineCheck('self_protection', 'defconfig', 'spectre_v2_user', 'is not off'),
+             CmdlineCheck('self_protection', 'defconfig', 'spectre_v2_user', 'is not set'))]
+    l += [OR(CmdlineCheck('self_protection', 'defconfig', 'spec_store_bypass_disable', 'is not off'),
+             CmdlineCheck('self_protection', 'defconfig', 'spec_store_bypass_disable', 'is not set'))]
+    l += [OR(CmdlineCheck('self_protection', 'defconfig', 'l1tf', 'is not off'),
+             CmdlineCheck('self_protection', 'defconfig', 'l1tf', 'is not set'))]
     if arch == 'ARM64':
         l += [OR(CmdlineCheck('self_protection', 'defconfig', 'rodata', 'full'),
                  AND(KconfigCheck('self_protection', 'defconfig', 'RODATA_FULL_DEFAULT_ENABLED', 'y'),
@@ -938,17 +943,26 @@ def parse_kconfig_file(parsed_options, fname):
 def normalize_cmdline_options(option, value):
     # Don't normalize the cmdline option values if
     # the Linux kernel doesn't use kstrtobool() for them
+    if option == 'debugfs':
+        # See debugfs_kernel() in fs/debugfs/inode.c
+        return value
+    if option == 'mitigations':
+        # See mitigations_parse_cmdline() in kernel/cpu.c
+        return value
     if option == 'pti':
-        # See pti_check_boottime_disable() in linux/arch/x86/mm/pti.c
+        # See pti_check_boottime_disable() in arch/x86/mm/pti.c
         return value
     if option == 'spectre_v2':
-        # See spectre_v2_parse_cmdline() in linux/arch/x86/kernel/cpu/bugs.c
+        # See spectre_v2_parse_cmdline() in arch/x86/kernel/cpu/bugs.c
         return value
-    if option == 'debugfs':
-        # See debugfs_kernel() in fs/debugfs/inode.c
+    if option == 'spectre_v2_user':
+        # See spectre_v2_parse_user_cmdline() in arch/x86/kernel/cpu/bugs.c
         return value
-    if option == 'mitigations':
-        # See mitigations_parse_cmdline() in linux/kernel/cpu.c
+    if option == 'spec_store_bypass_disable':
+        # See ssb_parse_cmdline() in arch/x86/kernel/cpu/bugs.c
+        return value
+    if option == 'l1tf':
+        # See l1tf_cmdline() in arch/x86/kernel/cpu/bugs.c
         return value
 
     # Implement a limited part of the kstrtobool() logic