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

From: Jonathan Cameron
Date: Sun Feb 21 2021 - 10:27:27 EST


On Tue, 16 Feb 2021 22:42:13 +0300
Dan Carpenter <dan.carpenter@xxxxxxxxxx> 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 <dan.carpenter@xxxxxxxxxx>

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;
> }