[PATCH v3 09/12] arm64: cpufeature: Ensure atomic updates to system_cpucaps bitmap
Jinjie Ruan
ruanjinjie at huawei.com
Wed Jun 24 02:25:34 PDT 2026
Parallel CPU bringup allows multiple secondary CPUs to concurrently
execute update_cpu_capabilities() during early boot.
The current non-atomic __set_bit() and __clear_bit() helpers perform
unserialized updates on the shared global bitmap, risking data races
and feature flag erasure.
Upgrade these operations to set_bit() and clear_bit() to ensure all
concurrent modifications are properly serialized via arm64 atomics.
Signed-off-by: Jinjie Ruan <ruanjinjie at huawei.com>
---
arch/arm64/kernel/cpufeature.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index be75e60d56ca..a1a13f3e01ed 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -3548,7 +3548,7 @@ static void update_cpu_capabilities(u16 scope_mask)
if (!caps->matches(caps, cpucap_default_scope(caps))) {
if (match_all)
- __clear_bit(caps->capability, system_cpucaps);
+ clear_bit(caps->capability, system_cpucaps);
continue;
}
@@ -3559,7 +3559,7 @@ static void update_cpu_capabilities(u16 scope_mask)
if (!match_all && caps->desc && !caps->cpus)
pr_info("detected: %s\n", caps->desc);
- __set_bit(caps->capability, system_cpucaps);
+ set_bit(caps->capability, system_cpucaps);
if (boot_cpu && (caps->type & SCOPE_BOOT_CPU))
set_bit(caps->capability, boot_cpucaps);
--
2.34.1
More information about the linux-arm-kernel
mailing list