diff mbox series

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

Message ID ZoWKEs4mCqeLyTOB@stanley.mountain (mailing list archive)
State Handled Elsewhere, archived
Headers show
Series power: supply: cros_charge-control: Fix signedness bug in charge_behaviour_store() | expand

Commit Message

Dan Carpenter July 4, 2024, 3:20 p.m. UTC
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(-)

Comments

Thomas Weißschuh July 4, 2024, 6:16 p.m. UTC | #1
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
>
Tzung-Bi Shih July 5, 2024, 1:55 a.m. UTC | #2
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
diff mbox series

Patch

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)