diff mbox series

iio: imu: bno055: uninitialized variable bug in bno055_trigger_handler()

Message ID Y0kuaO9PQkSQja+A@kili (mailing list archive)
State Accepted
Headers show
Series iio: imu: bno055: uninitialized variable bug in bno055_trigger_handler() | expand

Commit Message

Dan Carpenter Oct. 14, 2022, 9:39 a.m. UTC
This bug is basically harmless, although it will trigger a runtime warning
if you use KMSan.  On the first iteration through the loop, the
"best_delta" variable is uninitialized so re-order the condition to
prevent reading uninitialized memory.

Fixes: 4aefe1c2bd0c ("iio: imu: add Bosch Sensortec BNO055 core driver")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/iio/imu/bno055/bno055.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Nuno Sa Oct. 14, 2022, 10:38 a.m. UTC | #1
> -----Original Message-----
> From: Dan Carpenter <dan.carpenter@oracle.com>
> Sent: Friday, October 14, 2022 11:40 AM
> To: Jonathan Cameron <jic23@kernel.org>; Andrea Merello
> <andrea.merello@iit.it>
> Cc: Lars-Peter Clausen <lars@metafoo.de>; linux-iio@vger.kernel.org;
> kernel-janitors@vger.kernel.org
> Subject: [PATCH] iio: imu: bno055: uninitialized variable bug in
> bno055_trigger_handler()
> 
> [External]
> 
> This bug is basically harmless, although it will trigger a runtime warning
> if you use KMSan.  On the first iteration through the loop, the
> "best_delta" variable is uninitialized so re-order the condition to
> prevent reading uninitialized memory.
> 
> Fixes: 4aefe1c2bd0c ("iio: imu: add Bosch Sensortec BNO055 core driver")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---

Acked-by: Nuno Sá <nuno.sa@analog.com>
Jonathan Cameron Oct. 15, 2022, 4:33 p.m. UTC | #2
On Fri, 14 Oct 2022 12:39:52 +0300
Dan Carpenter <dan.carpenter@oracle.com> wrote:

> This bug is basically harmless, although it will trigger a runtime warning
> if you use KMSan.  On the first iteration through the loop, the
> "best_delta" variable is uninitialized so re-order the condition to
> prevent reading uninitialized memory.
> 
> Fixes: 4aefe1c2bd0c ("iio: imu: add Bosch Sensortec BNO055 core driver")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

You reported this a while back along with a second issue (false positive)
with hwval.

I posted a patch fixing both 
https://lore.kernel.org/linux-iio/20221002145324.3776484-1-jic23@kernel.org/

I don't really care which patch goes in, but curious to reasoning to not also
deal with the hwval warning here?

Jonathan

> ---
>  drivers/iio/imu/bno055/bno055.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/imu/bno055/bno055.c b/drivers/iio/imu/bno055/bno055.c
> index 307557a609e3..52744dd98e65 100644
> --- a/drivers/iio/imu/bno055/bno055.c
> +++ b/drivers/iio/imu/bno055/bno055.c
> @@ -632,7 +632,7 @@ static int bno055_set_regmask(struct bno055_priv *priv, int val, int val2,
>  			return -EINVAL;
>  		}
>  		delta = abs(tbl_val - req_val);
> -		if (delta < best_delta || first) {
> +		if (first || delta < best_delta) {
>  			best_delta = delta;
>  			hwval = i;
>  			first = false;
Jonathan Cameron Oct. 29, 2022, 3:39 p.m. UTC | #3
On Sat, 15 Oct 2022 17:33:59 +0100
Jonathan Cameron <jic23@kernel.org> wrote:

> On Fri, 14 Oct 2022 12:39:52 +0300
> Dan Carpenter <dan.carpenter@oracle.com> wrote:
> 
> > This bug is basically harmless, although it will trigger a runtime warning
> > if you use KMSan.  On the first iteration through the loop, the
> > "best_delta" variable is uninitialized so re-order the condition to
> > prevent reading uninitialized memory.
> > 
> > Fixes: 4aefe1c2bd0c ("iio: imu: add Bosch Sensortec BNO055 core driver")
> > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>  
> 
> You reported this a while back along with a second issue (false positive)
> with hwval.
> 
> I posted a patch fixing both 
> https://lore.kernel.org/linux-iio/20221002145324.3776484-1-jic23@kernel.org/
> 
> I don't really care which patch goes in, but curious to reasoning to not also
> deal with the hwval warning here?
> 
Meh. Rather than not applying either patch, I'll pick this one up.  We can
deal with the hwval warning at a later date if necessary.

Applied to the fixes-togreg branch of iio.git.

Jonathan

> Jonathan
> 
> > ---
> >  drivers/iio/imu/bno055/bno055.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/iio/imu/bno055/bno055.c b/drivers/iio/imu/bno055/bno055.c
> > index 307557a609e3..52744dd98e65 100644
> > --- a/drivers/iio/imu/bno055/bno055.c
> > +++ b/drivers/iio/imu/bno055/bno055.c
> > @@ -632,7 +632,7 @@ static int bno055_set_regmask(struct bno055_priv *priv, int val, int val2,
> >  			return -EINVAL;
> >  		}
> >  		delta = abs(tbl_val - req_val);
> > -		if (delta < best_delta || first) {
> > +		if (first || delta < best_delta) {
> >  			best_delta = delta;
> >  			hwval = i;
> >  			first = false;  
>
Dan Carpenter Nov. 7, 2022, 1:55 p.m. UTC | #4
On Sat, Oct 29, 2022 at 04:39:56PM +0100, Jonathan Cameron wrote:
> On Sat, 15 Oct 2022 17:33:59 +0100
> Jonathan Cameron <jic23@kernel.org> wrote:
> 
> > On Fri, 14 Oct 2022 12:39:52 +0300
> > Dan Carpenter <dan.carpenter@oracle.com> wrote:
> > 
> > > This bug is basically harmless, although it will trigger a runtime warning
> > > if you use KMSan.  On the first iteration through the loop, the
> > > "best_delta" variable is uninitialized so re-order the condition to
> > > prevent reading uninitialized memory.
> > > 
> > > Fixes: 4aefe1c2bd0c ("iio: imu: add Bosch Sensortec BNO055 core driver")
> > > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>  
> > 
> > You reported this a while back along with a second issue (false positive)
> > with hwval.
> > 
> > I posted a patch fixing both 
> > https://lore.kernel.org/linux-iio/20221002145324.3776484-1-jic23@kernel.org/
> > 
> > I don't really care which patch goes in, but curious to reasoning to not also
> > deal with the hwval warning here?
> > 
> Meh. Rather than not applying either patch, I'll pick this one up.  We can
> deal with the hwval warning at a later date if necessary.
> 

Sorry, I am behind in my email.

There was a couple weeks in between sending the bug report and the patch
so I forgot about it.  Also I send those bug reports from a different
system so I don't check that as part of the QC process.  I'm moving to
checking vger instead of grepping my outbox but I haven't automated that
yet.

I don't get a "hwval" warning on my system so using the cross function
DB must have silenced the false positive.

regards,
dan carpenter
diff mbox series

Patch

diff --git a/drivers/iio/imu/bno055/bno055.c b/drivers/iio/imu/bno055/bno055.c
index 307557a609e3..52744dd98e65 100644
--- a/drivers/iio/imu/bno055/bno055.c
+++ b/drivers/iio/imu/bno055/bno055.c
@@ -632,7 +632,7 @@  static int bno055_set_regmask(struct bno055_priv *priv, int val, int val2,
 			return -EINVAL;
 		}
 		delta = abs(tbl_val - req_val);
-		if (delta < best_delta || first) {
+		if (first || delta < best_delta) {
 			best_delta = delta;
 			hwval = i;
 			first = false;