diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2013-09-11 10:02:38 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-10-17 16:52:20 -0400 |
commit | d4f7ecf72819932e0f0a2221328d5eb4e28cc059 (patch) | |
tree | 14cdab374e682485e9119e46effb602962af2e74 /kernel/power | |
parent | 61e6cfa80de5760bbe406f4e815b7739205754d2 (diff) |
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>
Diffstat (limited to 'kernel/power')
-rw-r--r-- | kernel/power/qos.c | 26 |
1 files changed, 4 insertions, 22 deletions
diff --git a/kernel/power/qos.c b/kernel/power/qos.c index a394297f8b2f..8dff9b48075a 100644 --- a/kernel/power/qos.c +++ b/kernel/power/qos.c | |||
@@ -558,30 +558,12 @@ static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf, | |||
558 | if (count == sizeof(s32)) { | 558 | if (count == sizeof(s32)) { |
559 | if (copy_from_user(&value, buf, sizeof(s32))) | 559 | if (copy_from_user(&value, buf, sizeof(s32))) |
560 | return -EFAULT; | 560 | return -EFAULT; |
561 | } else if (count <= 11) { /* ASCII perhaps? */ | 561 | } else { |
562 | char ascii_value[11]; | ||
563 | unsigned long int ulval; | ||
564 | int ret; | 562 | int ret; |
565 | 563 | ||
566 | if (copy_from_user(ascii_value, buf, count)) | 564 | ret = kstrtos32_from_user(buf, count, 16, &value); |
567 | return -EFAULT; | 565 | if (ret) |
568 | 566 | return ret; | |
569 | if (count > 10) { | ||
570 | if (ascii_value[10] == '\n') | ||
571 | ascii_value[10] = '\0'; | ||
572 | else | ||
573 | return -EINVAL; | ||
574 | } else { | ||
575 | ascii_value[count] = '\0'; | ||
576 | } | ||
577 | ret = kstrtoul(ascii_value, 16, &ulval); | ||
578 | if (ret) { | ||
579 | pr_debug("%s, 0x%lx, 0x%x\n", ascii_value, ulval, ret); | ||
580 | return -EINVAL; | ||
581 | } | ||
582 | value = (s32)lower_32_bits(ulval); | ||
583 | } else { | ||
584 | return -EINVAL; | ||
585 | } | 567 | } |
586 | 568 | ||
587 | req = filp->private_data; | 569 | req = filp->private_data; |