Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1518558 > unrolled thread

[PATCH] iio: cros_ec_sensors_core: fix unsigned compared less than zero on status

Started byColin King <colin.king@canonical.com>
First post2016-11-10 00:20 +0100
Last post2016-11-10 04:20 +0100
Articles 2 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] iio: cros_ec_sensors_core: fix unsigned compared less than zero on status Colin King <colin.king@canonical.com> - 2016-11-10 00:20 +0100
    Re: [PATCH] iio: cros_ec_sensors_core: fix unsigned compared less  than zero on status Guenter Roeck <groeck@google.com> - 2016-11-10 04:20 +0100

#1518558 — [PATCH] iio: cros_ec_sensors_core: fix unsigned compared less than zero on status

FromColin King <colin.king@canonical.com>
Date2016-11-10 00:20 +0100
Subject[PATCH] iio: cros_ec_sensors_core: fix unsigned compared less than zero on status
Message-ID<sBKjT-5IP-3@gated-at.bofh.it>
From: Colin Ian King <colin.king@canonical.com>

status is a u8 hence the check if status is less than zero has no effect.
Fix this by replacing status with int ret so the less than zero compare
will correctly detect errors.

Issue found with static analysis with CoverityScan, CID 1375919

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
index a3be799..416cae5 100644
--- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
+++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
@@ -291,15 +291,15 @@ int cros_ec_sensors_read_lpc(struct iio_dev *indio_dev,
 			return -EIO;
 
 		/* Read status byte until EC is not busy. */
-		status = cros_ec_sensors_read_until_not_busy(st);
-		if (status < 0)
-			return status;
+		ret = cros_ec_sensors_read_until_not_busy(st);
+		if (ret < 0)
+			return ret;
 
 		/*
 		 * Store the current sample id so that we can compare to the
 		 * sample id after reading the data.
 		 */
-		samp_id = status & EC_MEMMAP_ACC_STATUS_SAMPLE_ID_MASK;
+		samp_id = ret & EC_MEMMAP_ACC_STATUS_SAMPLE_ID_MASK;
 
 		/* Read all EC data, format it, and store it into data. */
 		ret = cros_ec_sensors_read_data_unsafe(indio_dev, scan_mask,
-- 
2.10.2

[toc] | [next] | [standalone]


#1518659 — Re: [PATCH] iio: cros_ec_sensors_core: fix unsigned compared less than zero on status

FromGuenter Roeck <groeck@google.com>
Date2016-11-10 04:20 +0100
SubjectRe: [PATCH] iio: cros_ec_sensors_core: fix unsigned compared less than zero on status
Message-ID<sBO49-8iS-1@gated-at.bofh.it>
In reply to#1518558
On Wed, Nov 9, 2016 at 3:12 PM, Colin King <colin.king@canonical.com> wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> status is a u8 hence the check if status is less than zero has no effect.
> Fix this by replacing status with int ret so the less than zero compare
> will correctly detect errors.
>
> Issue found with static analysis with CoverityScan, CID 1375919
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>

Good catch!

Fixes: 974e6f02e27e ("iio: cros_ec_sensors_core: Add common functions
for the ChromeOS EC Sensor Hub")
Reviewed-by: Guenter Roeck <groeck@chromium.org>

For the benefit of others, this is in today's linux-next.

Thanks,
Guenter

> ---
>  drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> index a3be799..416cae5 100644
> --- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> @@ -291,15 +291,15 @@ int cros_ec_sensors_read_lpc(struct iio_dev *indio_dev,
>                         return -EIO;
>
>                 /* Read status byte until EC is not busy. */
> -               status = cros_ec_sensors_read_until_not_busy(st);
> -               if (status < 0)
> -                       return status;
> +               ret = cros_ec_sensors_read_until_not_busy(st);
> +               if (ret < 0)
> +                       return ret;
>
>                 /*
>                  * Store the current sample id so that we can compare to the
>                  * sample id after reading the data.
>                  */
> -               samp_id = status & EC_MEMMAP_ACC_STATUS_SAMPLE_ID_MASK;
> +               samp_id = ret & EC_MEMMAP_ACC_STATUS_SAMPLE_ID_MASK;
>
>                 /* Read all EC data, format it, and store it into data. */
>                 ret = cros_ec_sensors_read_data_unsafe(indio_dev, scan_mask,
> --
> 2.10.2
>

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web