diff mbox series

HID: logitech-hidpp: initialize level variable

Message ID 20210507191819.71092-1-trix@redhat.com (mailing list archive)
State Mainlined
Commit 81c8bf9170477d453b24a6bc3300d201d641e645
Delegated to: Jiri Kosina
Headers show
Series HID: logitech-hidpp: initialize level variable | expand

Commit Message

Tom Rix May 7, 2021, 7:18 p.m. UTC
From: Tom Rix <trix@redhat.com>

Static analysis reports this representative problem

hid-logitech-hidpp.c:1356:23: warning: Assigned value is
  garbage or undefined
        hidpp->battery.level = level;
                             ^ ~~~~~

In some cases, 'level' is never set in hidpp20_battery_map_status_voltage()
Since level is not available on all hw, initialize level to unknown.

Fixes: be281368f297 ("hid-logitech-hidpp: read battery voltage from newer devices")
Signed-off-by: Tom Rix <trix@redhat.com>
---
 drivers/hid/hid-logitech-hidpp.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Filipe Laíns May 16, 2021, 3:21 a.m. UTC | #1
On Fri, 2021-05-07 at 12:18 -0700, trix@redhat.com wrote:
> From: Tom Rix <trix@redhat.com>
> 
> Static analysis reports this representative problem
> 
> hid-logitech-hidpp.c:1356:23: warning: Assigned value is
>   garbage or undefined
>         hidpp->battery.level = level;
>                              ^ ~~~~~
> 
> In some cases, 'level' is never set in hidpp20_battery_map_status_voltage()
> Since level is not available on all hw, initialize level to unknown.
> 
> Fixes: be281368f297 ("hid-logitech-hidpp: read battery voltage from newer
> devices")
> Signed-off-by: Tom Rix <trix@redhat.com>
> ---
>  drivers/hid/hid-logitech-hidpp.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-
> hidpp.c
> index 69670ca7e1e1..61635e629469 100644
> --- a/drivers/hid/hid-logitech-hidpp.c
> +++ b/drivers/hid/hid-logitech-hidpp.c
> @@ -1265,6 +1265,7 @@ static int hidpp20_battery_map_status_voltage(u8
> data[3], int *voltage,
>         int status;
>  
>         long flags = (long) data[2];
> +       *level = POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN;
>  
>         if (flags & 0x80)
>                 switch (flags & 0x07) {

Hi Tom,

Taking a look at how this function is used, it does make sense to initialize the
level, thank you :)

Reviewed-by: Filipe Laíns <lains@riseup.net>

Cheers,
Filipe Laíns
Jiri Kosina May 26, 2021, 10:39 a.m. UTC | #2
On Sun, 16 May 2021, Filipe Laíns wrote:

> > Static analysis reports this representative problem
> > 
> > hid-logitech-hidpp.c:1356:23: warning: Assigned value is
> >   garbage or undefined
> >         hidpp->battery.level = level;
> >                              ^ ~~~~~
> > 
> > In some cases, 'level' is never set in hidpp20_battery_map_status_voltage()
> > Since level is not available on all hw, initialize level to unknown.
> > 
> > Fixes: be281368f297 ("hid-logitech-hidpp: read battery voltage from newer
> > devices")
> > Signed-off-by: Tom Rix <trix@redhat.com>
> > ---
> >  drivers/hid/hid-logitech-hidpp.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-
> > hidpp.c
> > index 69670ca7e1e1..61635e629469 100644
> > --- a/drivers/hid/hid-logitech-hidpp.c
> > +++ b/drivers/hid/hid-logitech-hidpp.c
> > @@ -1265,6 +1265,7 @@ static int hidpp20_battery_map_status_voltage(u8
> > data[3], int *voltage,
> >         int status;
> >  
> >         long flags = (long) data[2];
> > +       *level = POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN;
> >  
> >         if (flags & 0x80)
> >                 switch (flags & 0x07) {
> 
> Hi Tom,
> 
> Taking a look at how this function is used, it does make sense to initialize the
> level, thank you :)
> 
> Reviewed-by: Filipe Laíns <lains@riseup.net>

Applied, thanks.
diff mbox series

Patch

diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c
index 69670ca7e1e1..61635e629469 100644
--- a/drivers/hid/hid-logitech-hidpp.c
+++ b/drivers/hid/hid-logitech-hidpp.c
@@ -1265,6 +1265,7 @@  static int hidpp20_battery_map_status_voltage(u8 data[3], int *voltage,
 	int status;
 
 	long flags = (long) data[2];
+	*level = POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN;
 
 	if (flags & 0x80)
 		switch (flags & 0x07) {