Message ID | 1367936460-15257-1-git-send-email-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Eduardo Valentin |
Headers | show |
Andy, On 07-05-2013 10:21, Andy Shevchenko wrote: > Setting policy results in invalid value error. > % echo "step_wise" > policy > % echo: write error: Invalid argument > > Need clean up of the buffer which "echo" may add based on the arguments, before > comparing aganist list of governor names. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > Reported-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> This one was close.. > --- > In v2: > - copy input string to a temporary buffer > drivers/thermal/thermal_core.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c > index d755440..e256380 100644 > --- a/drivers/thermal/thermal_core.c > +++ b/drivers/thermal/thermal_core.c > @@ -33,6 +33,7 @@ > #include <linux/idr.h> > #include <linux/thermal.h> > #include <linux/reboot.h> > +#include <linux/string.h> > #include <net/netlink.h> > #include <net/genetlink.h> > > @@ -713,10 +714,13 @@ policy_store(struct device *dev, struct device_attribute *attr, > int ret = -EINVAL; > struct thermal_zone_device *tz = to_thermal_zone(dev); > struct thermal_governor *gov; > + char *name[THERMAL_NAME_LENGTH]; I really believe you meant: + char name[THERMAL_NAME_LENGTH]; > + > + snprintf(name, sizeof(name), "%s", buf); > Still there are compilation warnings. > mutex_lock(&thermal_governor_lock); > > - gov = __find_governor(buf); > + gov = __find_governor(strim(name)); > if (!gov) > goto exit; > >
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index d755440..e256380 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -33,6 +33,7 @@ #include <linux/idr.h> #include <linux/thermal.h> #include <linux/reboot.h> +#include <linux/string.h> #include <net/netlink.h> #include <net/genetlink.h> @@ -713,10 +714,13 @@ policy_store(struct device *dev, struct device_attribute *attr, int ret = -EINVAL; struct thermal_zone_device *tz = to_thermal_zone(dev); struct thermal_governor *gov; + char *name[THERMAL_NAME_LENGTH]; + + snprintf(name, sizeof(name), "%s", buf); mutex_lock(&thermal_governor_lock); - gov = __find_governor(buf); + gov = __find_governor(strim(name)); if (!gov) goto exit;
Setting policy results in invalid value error. % echo "step_wise" > policy % echo: write error: Invalid argument Need clean up of the buffer which "echo" may add based on the arguments, before comparing aganist list of governor names. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reported-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> --- In v2: - copy input string to a temporary buffer drivers/thermal/thermal_core.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)