platform/x86: asus-wmi: Refactor charge_threshold_store()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 16 Aug 2019 09:46:25 +0000 (12:46 +0300)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 16 Aug 2019 09:50:12 +0000 (12:50 +0300)
There are few issues with the current code:
 - the error code from kstrtouint() is shadowed
 - the error code from asus_wmi_set_devstate() is ignored
 - the extra check against 0 for count (this is guaranteed by sysfs)

Fix these issues by doing a slight refactoring of charge_threshold_store().

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
drivers/platform/x86/asus-wmi.c

index 22ae350e0a968a3da67a16e47c83270b9b75b197..1a76d878852f4c4cacd3aed770bcb1537503f05a 100644 (file)
@@ -2086,13 +2086,15 @@ static ssize_t charge_threshold_store(struct device *dev,
        int value, ret, rv;
 
        ret = kstrtouint(buf, 10, &value);
+       if (ret)
+               return ret;
 
-       if (!count || ret != 0)
-               return -EINVAL;
        if (value < 0 || value > 100)
                return -EINVAL;
 
-       asus_wmi_set_devstate(ASUS_WMI_CHARGE_THRESHOLD, value, &rv);
+       ret = asus_wmi_set_devstate(ASUS_WMI_CHARGE_THRESHOLD, value, &rv);
+       if (!ret)
+               return ret;
 
        if (rv != 1)
                return -EIO;