]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
iio: imu: adis16480: assign bias value only if operation succeeded
authorAlexandru Ardelean <alexandru.ardelean@analog.com>
Fri, 1 Nov 2019 09:35:03 +0000 (11:35 +0200)
committerKhalid Elmously <khalid.elmously@canonical.com>
Fri, 14 Feb 2020 06:00:53 +0000 (01:00 -0500)
BugLink: https://bugs.launchpad.net/bugs/1862227
commit 9b742763d9d4195e823ae6ece760c9ed0500c1dc upstream.

This was found only after the whole thing with the inline functions, but
the compiler actually found something. The value of the `bias` (in
adis16480_get_calibbias()) should only be set if the read operation was
successful.

No actual known problem occurs as users of this function all
ultimately check the return value.  Hence probably not stable material.

Fixes: 2f3abe6cbb6c9 ("iio:imu: Add support for the ADIS16480 and similar IMUs")
Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/iio/imu/adis16480.c

index 7b966a41d6234e54bb687fab55eefba7c18e457a..cf7b59d97802ac165e2fb10349e5e16bfd3d9c23 100644 (file)
@@ -454,12 +454,14 @@ static int adis16480_get_calibbias(struct iio_dev *indio_dev,
        case IIO_MAGN:
        case IIO_PRESSURE:
                ret = adis_read_reg_16(&st->adis, reg, &val16);
-               *bias = sign_extend32(val16, 15);
+               if (ret == 0)
+                       *bias = sign_extend32(val16, 15);
                break;
        case IIO_ANGL_VEL:
        case IIO_ACCEL:
                ret = adis_read_reg_32(&st->adis, reg, &val32);
-               *bias = sign_extend32(val32, 31);
+               if (ret == 0)
+                       *bias = sign_extend32(val32, 31);
                break;
        default:
                        ret = -EINVAL;