Negative values are special.  Don't let users write them directly.

Signed-off-by: Andy Lutomirski <l...@kernel.org>
---
 drivers/base/power/sysfs.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/base/power/sysfs.c b/drivers/base/power/sysfs.c
index a7b46798c81d..33b4b902741a 100644
--- a/drivers/base/power/sysfs.c
+++ b/drivers/base/power/sysfs.c
@@ -263,7 +263,11 @@ static ssize_t pm_qos_latency_tolerance_store(struct 
device *dev,
        s32 value;
        int ret;
 
-       if (kstrtos32(buf, 0, &value)) {
+       if (kstrtos32(buf, 0, &value) == 0) {
+               /* Users can't write negative values directly */
+               if (value < 0)
+                       return -EINVAL;
+       } else {
                if (!strcmp(buf, "auto") || !strcmp(buf, "auto\n"))
                        value = PM_QOS_LATENCY_TOLERANCE_NO_CONSTRAINT;
                else if (!strcmp(buf, "any") || !strcmp(buf, "any\n"))
-- 
2.9.3

Reply via email to