PM / devfreq: fix sscanf handling for writable sysfs entries
sscanf returns 0 when an invalid parameter like: echo -n "a">min_freq is attempted. Returning back the return result(0) will cause the command not to return back to command prompt. Instead, just return -EINVAL when sscanf does not return 1. This is done for min_freq, max_freq and polling_interval Signed-off-by: Nishanth Menon <nm@ti.com> Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
c5b4a1c15d
commit
12e26265e6
|
@ -496,12 +496,11 @@ static ssize_t store_polling_interval(struct device *dev,
|
||||||
|
|
||||||
ret = sscanf(buf, "%u", &value);
|
ret = sscanf(buf, "%u", &value);
|
||||||
if (ret != 1)
|
if (ret != 1)
|
||||||
goto out;
|
return -EINVAL;
|
||||||
|
|
||||||
df->governor->event_handler(df, DEVFREQ_GOV_INTERVAL, &value);
|
df->governor->event_handler(df, DEVFREQ_GOV_INTERVAL, &value);
|
||||||
ret = count;
|
ret = count;
|
||||||
|
|
||||||
out:
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -515,7 +514,7 @@ static ssize_t store_min_freq(struct device *dev, struct device_attribute *attr,
|
||||||
|
|
||||||
ret = sscanf(buf, "%lu", &value);
|
ret = sscanf(buf, "%lu", &value);
|
||||||
if (ret != 1)
|
if (ret != 1)
|
||||||
goto out;
|
return -EINVAL;
|
||||||
|
|
||||||
mutex_lock(&df->lock);
|
mutex_lock(&df->lock);
|
||||||
max = df->max_freq;
|
max = df->max_freq;
|
||||||
|
@ -529,7 +528,6 @@ static ssize_t store_min_freq(struct device *dev, struct device_attribute *attr,
|
||||||
ret = count;
|
ret = count;
|
||||||
unlock:
|
unlock:
|
||||||
mutex_unlock(&df->lock);
|
mutex_unlock(&df->lock);
|
||||||
out:
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -549,7 +547,7 @@ static ssize_t store_max_freq(struct device *dev, struct device_attribute *attr,
|
||||||
|
|
||||||
ret = sscanf(buf, "%lu", &value);
|
ret = sscanf(buf, "%lu", &value);
|
||||||
if (ret != 1)
|
if (ret != 1)
|
||||||
goto out;
|
return -EINVAL;
|
||||||
|
|
||||||
mutex_lock(&df->lock);
|
mutex_lock(&df->lock);
|
||||||
min = df->min_freq;
|
min = df->min_freq;
|
||||||
|
@ -563,7 +561,6 @@ static ssize_t store_max_freq(struct device *dev, struct device_attribute *attr,
|
||||||
ret = count;
|
ret = count;
|
||||||
unlock:
|
unlock:
|
||||||
mutex_unlock(&df->lock);
|
mutex_unlock(&df->lock);
|
||||||
out:
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue