mirror of https://gitee.com/openkylin/linux.git
PM / QoS: simplify pm_qos_power_write()
Let kstrtos32_from_user() do the necessary calls and checks. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
61e6cfa80d
commit
d4f7ecf728
|
@ -558,30 +558,12 @@ static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf,
|
|||
if (count == sizeof(s32)) {
|
||||
if (copy_from_user(&value, buf, sizeof(s32)))
|
||||
return -EFAULT;
|
||||
} else if (count <= 11) { /* ASCII perhaps? */
|
||||
char ascii_value[11];
|
||||
unsigned long int ulval;
|
||||
} else {
|
||||
int ret;
|
||||
|
||||
if (copy_from_user(ascii_value, buf, count))
|
||||
return -EFAULT;
|
||||
|
||||
if (count > 10) {
|
||||
if (ascii_value[10] == '\n')
|
||||
ascii_value[10] = '\0';
|
||||
else
|
||||
return -EINVAL;
|
||||
} else {
|
||||
ascii_value[count] = '\0';
|
||||
}
|
||||
ret = kstrtoul(ascii_value, 16, &ulval);
|
||||
if (ret) {
|
||||
pr_debug("%s, 0x%lx, 0x%x\n", ascii_value, ulval, ret);
|
||||
return -EINVAL;
|
||||
}
|
||||
value = (s32)lower_32_bits(ulval);
|
||||
} else {
|
||||
return -EINVAL;
|
||||
ret = kstrtos32_from_user(buf, count, 16, &value);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
req = filp->private_data;
|
||||
|
|
Loading…
Reference in New Issue