[PATCH] power: supply: cros_charge-control: Fix signedness bug in charge_behaviour_store()

Dan Carpenter posted 1 patch 1 year, 7 months ago
drivers/power/supply/cros_charge-control.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
[PATCH] power: supply: cros_charge-control: Fix signedness bug in charge_behaviour_store()
Posted by Dan Carpenter 1 year, 7 months ago
The C standard is vague about the signedness of enums, but in this case
here, they are treated as unsigned so the error handling does not work.
Use an int type to fix this.

Fixes: c6ed48ef5259 ("power: supply: add ChromeOS EC based charge control driver")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
 drivers/power/supply/cros_charge-control.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/power/supply/cros_charge-control.c b/drivers/power/supply/cros_charge-control.c
index 73d7f2dc0fa3..3183a13eefd0 100644
--- a/drivers/power/supply/cros_charge-control.c
+++ b/drivers/power/supply/cros_charge-control.c
@@ -204,14 +204,13 @@ static ssize_t charge_behaviour_store(struct device *dev, struct device_attribut
 {
 	struct cros_chctl_priv *priv = cros_chctl_attr_to_priv(&attr->attr,
 							       CROS_CHCTL_ATTR_CHARGE_BEHAVIOUR);
-	enum power_supply_charge_behaviour behaviour;
 	int ret;
 
-	behaviour = power_supply_charge_behaviour_parse(EC_CHARGE_CONTROL_BEHAVIOURS, buf);
-	if (behaviour < 0)
-		return behaviour;
+	ret = power_supply_charge_behaviour_parse(EC_CHARGE_CONTROL_BEHAVIOURS, buf);
+	if (ret < 0)
+		return ret;
 
-	priv->current_behaviour = behaviour;
+	priv->current_behaviour = ret;
 
 	ret = cros_chctl_configure_ec(priv);
 	if (ret < 0)
-- 
2.43.0
Re: [PATCH] power: supply: cros_charge-control: Fix signedness bug in charge_behaviour_store()
Posted by Tzung-Bi Shih 1 year, 7 months ago
On Thu, Jul 04, 2024 at 10:20:03AM -0500, Dan Carpenter wrote:
> The C standard is vague about the signedness of enums, but in this case
> here, they are treated as unsigned so the error handling does not work.
> Use an int type to fix this.
> 
> [...]

Applied to

    https://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux.git for-next

Thanks!

[1/1] power: supply: cros_charge-control: Fix signedness bug in charge_behaviour_store()
      commit: 4baf1cc54433ff7c6e5178517bc8768001416681
Re: [PATCH] power: supply: cros_charge-control: Fix signedness bug in charge_behaviour_store()
Posted by Thomas Weißschuh 1 year, 7 months ago
Hi Dan,

Thanks!

On 2024-07-04 10:20:03+0000, Dan Carpenter wrote:
> The C standard is vague about the signedness of enums, but in this case
> here, they are treated as unsigned so the error handling does not work.
> Use an int type to fix this.
> 
> Fixes: c6ed48ef5259 ("power: supply: add ChromeOS EC based charge control driver")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>

Acked-by: Thomas Weißschuh <linux@weissschuh.net>

> ---
>  drivers/power/supply/cros_charge-control.c | 9 ++++-----
>  1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/power/supply/cros_charge-control.c b/drivers/power/supply/cros_charge-control.c
> index 73d7f2dc0fa3..3183a13eefd0 100644
> --- a/drivers/power/supply/cros_charge-control.c
> +++ b/drivers/power/supply/cros_charge-control.c
> @@ -204,14 +204,13 @@ static ssize_t charge_behaviour_store(struct device *dev, struct device_attribut
>  {
>  	struct cros_chctl_priv *priv = cros_chctl_attr_to_priv(&attr->attr,
>  							       CROS_CHCTL_ATTR_CHARGE_BEHAVIOUR);
> -	enum power_supply_charge_behaviour behaviour;
>  	int ret;
>  
> -	behaviour = power_supply_charge_behaviour_parse(EC_CHARGE_CONTROL_BEHAVIOURS, buf);
> -	if (behaviour < 0)
> -		return behaviour;
> +	ret = power_supply_charge_behaviour_parse(EC_CHARGE_CONTROL_BEHAVIOURS, buf);
> +	if (ret < 0)
> +		return ret;
>  
> -	priv->current_behaviour = behaviour;
> +	priv->current_behaviour = ret;
>  
>  	ret = cros_chctl_configure_ec(priv);
>  	if (ret < 0)
> -- 
> 2.43.0
>