[PATCH v1] arm64: cpuinfo: Fix sysfs cleanup on failure
From: Yuho Choi
Date: Thu Jul 02 2026 - 19:08:41 EST
cpuid_cpu_online() creates the CPU registers kobject and the base
identification attribute group before optionally merging the SME-specific
SMIDR attribute into that group.
If the base group creation fails, return after deleting the kobject. If
the SME merge fails, remove the base group before deleting the kobject.
Fixes: d69d56496487 ("arm64/sme: Expose SMIDR through sysfs")
Signed-off-by: Yuho Choi <dbgh9129@xxxxxxxxx>
---
arch/arm64/kernel/cpuinfo.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
index d50e2a9b066b..141bcfa4d611 100644
--- a/arch/arm64/kernel/cpuinfo.c
+++ b/arch/arm64/kernel/cpuinfo.c
@@ -380,9 +380,19 @@ static int cpuid_cpu_online(unsigned int cpu)
goto out;
rc = sysfs_create_group(&info->kobj, &cpuregs_attr_group);
if (rc)
- kobject_del(&info->kobj);
- if (system_supports_sme())
+ goto out_del_kobj;
+ if (system_supports_sme()) {
rc = sysfs_merge_group(&info->kobj, &sme_cpuregs_attr_group);
+ if (rc)
+ goto out_remove_group;
+ }
+
+ return 0;
+
+out_remove_group:
+ sysfs_remove_group(&info->kobj, &cpuregs_attr_group);
+out_del_kobj:
+ kobject_del(&info->kobj);
out:
return rc;
}
--
2.43.0