cpu/SMT: Move smt/control simple exit cases earlier
authorMichael Ellerman <mpe@ellerman.id.au>
Wed, 5 Jul 2023 14:51:36 +0000 (16:51 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 28 Jul 2023 07:53:36 +0000 (09:53 +0200)
Move the simple exit cases, i.e. those which don't depend on the value
written, earlier in the function. That makes it clearer that regardless of
the input those states cannot be transitioned out of.

That does have a user-visible effect, in that the error returned will
now always be EPERM/ENODEV for those states, regardless of the value
written. Previously writing an invalid value would return EINVAL even
when in those states.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Zhang Rui <rui.zhang@intel.com>
Link: https://lore.kernel.org/r/20230705145143.40545-4-ldufour@linux.ibm.com
kernel/cpu.c

index e02204c4675a6e4811f7de43ae991a52ceb721f8..b6fe170c93e93576e225c21fa6109e2494a010ec 100644 (file)
@@ -2841,6 +2841,12 @@ __store_smt_control(struct device *dev, struct device_attribute *attr,
 {
        int ctrlval, ret;
 
+       if (cpu_smt_control == CPU_SMT_FORCE_DISABLED)
+               return -EPERM;
+
+       if (cpu_smt_control == CPU_SMT_NOT_SUPPORTED)
+               return -ENODEV;
+
        if (sysfs_streq(buf, "on"))
                ctrlval = CPU_SMT_ENABLED;
        else if (sysfs_streq(buf, "off"))
@@ -2850,12 +2856,6 @@ __store_smt_control(struct device *dev, struct device_attribute *attr,
        else
                return -EINVAL;
 
-       if (cpu_smt_control == CPU_SMT_FORCE_DISABLED)
-               return -EPERM;
-
-       if (cpu_smt_control == CPU_SMT_NOT_SUPPORTED)
-               return -ENODEV;
-
        ret = lock_device_hotplug_sysfs();
        if (ret)
                return ret;