[PATCHv2] thermal: cut the spaces when user sets policy
diff mbox

Message ID 1367936460-15257-1-git-send-email-andriy.shevchenko@linux.intel.com
State Changes Requested
Delegated to: Eduardo Valentin
Headers show

Commit Message

Andy Shevchenko May 7, 2013, 2:21 p.m. UTC
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(-)

Comments

Eduardo Valentin May 8, 2013, 3:31 p.m. UTC | #1
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;
>  
>

Patch
diff mbox

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;