Remember that SHADOW_CALL_STACK depends on clang
[kconfig-hardened-check.git] / kconfig_hardened_check / __init__.py
index b119df33b4d563bc10982e93cdb56f5e80bc4f46..e47c5d402d46b64fb7735e6545a8f2895b3198ac 100644 (file)
@@ -302,6 +302,8 @@ def construct_checklist(l, arch):
         l += [OptCheck('self_protection', 'defconfig', 'SYN_COOKIES', 'y')] # another reason?
         l += [OR(OptCheck('self_protection', 'defconfig', 'X86_UMIP', 'y'),
                  OptCheck('self_protection', 'defconfig', 'X86_INTEL_UMIP', 'y'))]
+    if arch in ('ARM64', 'ARM'):
+        l += [OptCheck('self_protection', 'defconfig', 'STACKPROTECTOR_PER_TASK', 'y')]
     if arch == 'X86_64':
         l += [OptCheck('self_protection', 'defconfig', 'PAGE_TABLE_ISOLATION', 'y')]
         l += [OptCheck('self_protection', 'defconfig', 'RANDOMIZE_MEMORY', 'y')]
@@ -322,7 +324,6 @@ def construct_checklist(l, arch):
              VerCheck((5, 10)))] # HARDEN_BRANCH_PREDICTOR is enabled by default since v5.10
     if arch == 'ARM':
         l += [OptCheck('self_protection', 'defconfig', 'CPU_SW_DOMAIN_PAN', 'y')]
-        l += [OptCheck('self_protection', 'defconfig', 'STACKPROTECTOR_PER_TASK', 'y')]
         l += [OptCheck('self_protection', 'defconfig', 'HARDEN_BRANCH_PREDICTOR', 'y')]
 
     # 'self_protection', 'kspp'
@@ -388,10 +389,11 @@ def construct_checklist(l, arch):
         l += [AND(OptCheck('self_protection', 'clipos', 'STACKLEAK_RUNTIME_DISABLE', 'is not set'),
                   stackleak_is_set)]
     if arch in ('X86_64', 'X86_32'):
-        l += [AND(OptCheck('self_protection', 'clipos', 'INTEL_IOMMU_SVM', 'y'),
-                  iommu_support_is_set)]
         l += [AND(OptCheck('self_protection', 'clipos', 'INTEL_IOMMU_DEFAULT_ON', 'y'),
                   iommu_support_is_set)]
+    if arch == 'X86_64':
+        l += [AND(OptCheck('self_protection', 'clipos', 'INTEL_IOMMU_SVM', 'y'),
+                  iommu_support_is_set)]
     if arch == 'X86_32':
         l += [AND(OptCheck('self_protection', 'clipos', 'INTEL_IOMMU', 'y'),
                   iommu_support_is_set)]
@@ -405,7 +407,7 @@ def construct_checklist(l, arch):
         l += [AND(OptCheck('self_protection', 'my', 'AMD_IOMMU_V2', 'y'),
                   iommu_support_is_set)]
     if arch == 'ARM64':
-        l += [OptCheck('self_protection', 'my', 'SHADOW_CALL_STACK', 'y')] # maybe it should be alternative to STACKPROTECTOR_STRONG
+        l += [OptCheck('self_protection', 'my', 'SHADOW_CALL_STACK', 'y')] # depends on clang, maybe it's alternative to STACKPROTECTOR_STRONG
 
     # 'security_policy'
     if arch in ('X86_64', 'ARM64', 'X86_32'):