Re: [PATCH v1] arm64: cpuinfo: Fix sysfs cleanup on failure
From: Will Deacon
Date: Thu Jul 16 2026 - 08:18:22 EST
On Thu, Jul 02, 2026 at 07:07:44PM -0400, Yuho Choi wrote:
> 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.
Why is it a good idea to remove the entire group if the merge fails?
Wouldn't it be more pragmatic to continue with the group that we did
manage to create? I don't really get why this proposed behaviour is
better.
Will
> 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