[PATCH v1] arm64: cpuinfo: Fix sysfs cleanup on failure

Will Deacon will at kernel.org
Thu Jul 16 05:18:04 PDT 2026


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



More information about the linux-arm-kernel mailing list