iio: inkern: fix return value in devm_of_iio_channel_get_by_name()
authorNuno Sá <nuno.sa@analog.com>
Fri, 15 Jul 2022 12:28:50 +0000 (14:28 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 15 Aug 2022 21:29:59 +0000 (22:29 +0100)
of_iio_channel_get_by_name() can either return NULL or an error pointer
so that only doing IS_ERR() is not enough. Fix it by checking the NULL
pointer case and return -ENODEV in that case. Note this is done like this
so that users of the function (which only check for error pointers) do
not need to be changed. This is not ideal since we are losing error codes
and as such, in a follow up change, things will be unified so that
of_iio_channel_get_by_name() only returns error codes.

Fixes: 6e39b145cef7 ("iio: provide of_iio_channel_get_by_name() and devm_ version it")
Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20220715122903.332535-3-nuno.sa@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/inkern.c

index 9d87057794fcaca8a93466f2b018ba618afc2ed5..87fd2a0d44f2ace72f5b3f8eb3a147843b6ed5e9 100644 (file)
@@ -412,6 +412,8 @@ struct iio_channel *devm_of_iio_channel_get_by_name(struct device *dev,
        channel = of_iio_channel_get_by_name(np, channel_name);
        if (IS_ERR(channel))
                return channel;
+       if (!channel)
+               return ERR_PTR(-ENODEV);
 
        ret = devm_add_action_or_reset(dev, devm_iio_channel_free, channel);
        if (ret)