2021-02-16 19:44:36

by Dan Carpenter

[permalink] [raw]
Subject: [PATCH] iio: adis16400: Fix an error code in adis16400_initial_setup()

This is to silence a new Smatch warning:

drivers/iio/imu/adis16400.c:492 adis16400_initial_setup()
warn: sscanf doesn't return error codes

If the condition "if (st->variant->flags & ADIS16400_HAS_SLOW_MODE) {"
is false then we return 1 instead of returning 0 and probe will fail.

Fixes: 72a868b38bdd ("iio: imu: check sscanf return value")
Signed-off-by: Dan Carpenter <[email protected]>
---
drivers/iio/imu/adis16400.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/iio/imu/adis16400.c b/drivers/iio/imu/adis16400.c
index 54af2ed664f6..785a4ce606d8 100644
--- a/drivers/iio/imu/adis16400.c
+++ b/drivers/iio/imu/adis16400.c
@@ -462,8 +462,7 @@ static int adis16400_initial_setup(struct iio_dev *indio_dev)
if (ret)
goto err_ret;

- ret = sscanf(indio_dev->name, "adis%u\n", &device_id);
- if (ret != 1) {
+ if (sscanf(indio_dev->name, "adis%u\n", &device_id) != 1) {
ret = -EINVAL;
goto err_ret;
}
--
2.30.0


2021-02-21 15:28:13

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH] iio: adis16400: Fix an error code in adis16400_initial_setup()

On Tue, 16 Feb 2021 22:42:13 +0300
Dan Carpenter <[email protected]> wrote:

> This is to silence a new Smatch warning:
>
> drivers/iio/imu/adis16400.c:492 adis16400_initial_setup()
> warn: sscanf doesn't return error codes
>
> If the condition "if (st->variant->flags & ADIS16400_HAS_SLOW_MODE) {"
> is false then we return 1 instead of returning 0 and probe will fail.
>
> Fixes: 72a868b38bdd ("iio: imu: check sscanf return value")
> Signed-off-by: Dan Carpenter <[email protected]>

Hi Dan,

May be worth a follow up at some point to get rid of the silliness
of goto err_ret by using direct returns. Obviously that is a rather
less minimal fix however so not so good for backports.

Hence, applied this to the fixes-togreg branch of iio.git and marked
for stable.

Thanks,


Jonathan

> ---
> drivers/iio/imu/adis16400.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/iio/imu/adis16400.c b/drivers/iio/imu/adis16400.c
> index 54af2ed664f6..785a4ce606d8 100644
> --- a/drivers/iio/imu/adis16400.c
> +++ b/drivers/iio/imu/adis16400.c
> @@ -462,8 +462,7 @@ static int adis16400_initial_setup(struct iio_dev *indio_dev)
> if (ret)
> goto err_ret;
>
> - ret = sscanf(indio_dev->name, "adis%u\n", &device_id);
> - if (ret != 1) {
> + if (sscanf(indio_dev->name, "adis%u\n", &device_id) != 1) {
> ret = -EINVAL;
> goto err_ret;
> }