]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
iio: Fix iio_multiply_value use in iio_read_channel_processed_scale
authorSvyatoslav Ryhel <clamor95@gmail.com>
Thu, 16 Apr 2026 11:14:42 +0000 (14:14 +0300)
committerJonathan Cameron <jic23@kernel.org>
Tue, 28 Apr 2026 15:36:09 +0000 (16:36 +0100)
The function iio_multiply_value returns IIO_VAL_INT (1) on success or a
negative error number on failure, while iio_read_channel_processed_scale
should return an error code or 0. This creates a situation where the
expected result is treated as an error. Fix this by checking the
iio_multiply_value result separately, instead of passing it as a return
value.

Fixes: 05f958d003c9 ("iio: Improve iio_read_channel_processed_scale() precision")
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Hans de Goede <johannes.goede@oss.qualcomm.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/inkern.c

index 0df0ab3de270909f066726efb83989da0d9bc81d..9ce20cb05a9b6ae455247795f172a925b818b498 100644 (file)
@@ -738,7 +738,11 @@ int iio_read_channel_processed_scale(struct iio_channel *chan, int *val,
                if (ret < 0)
                        return ret;
 
-               return iio_multiply_value(val, scale, ret, pval, pval2);
+               ret = iio_multiply_value(val, scale, ret, pval, pval2);
+               if (ret < 0)
+                       return ret;
+
+               return 0;
        } else {
                ret = iio_channel_read(chan, val, NULL, IIO_CHAN_INFO_RAW);
                if (ret < 0)