diff mbox series

[v2,2/2] iio: ltc2983: fail probe if no channels are given

Message ID 20210825084149.11587-2-nuno.sa@analog.com (mailing list archive)
State Accepted
Headers show
Series [v2,1/2] iio: ltc2983: add support for optional reset gpio | expand

Commit Message

Nuno Sá Aug. 25, 2021, 8:41 a.m. UTC
If there are no channels defined in the devicetree, there's no point in
probing the device. We were actually requesting a zero sized 'kmalloc'
array but since we were not touching the ZERO_SIZE_PTR afterwards,
nothing bad was actually happening. Hence this is not really a fix but
rather an improvement.

Reviewed-by: Alexandru Ardelean <ardeleanalex@gmail.com>
Signed-off-by: Nuno Sá <nuno.sa@analog.com>
---
Nothing changed in v2.

 drivers/iio/temperature/ltc2983.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Jonathan Cameron Aug. 30, 2021, 11:05 a.m. UTC | #1
On Wed, 25 Aug 2021 10:41:49 +0200
Nuno Sá <nuno.sa@analog.com> wrote:

> If there are no channels defined in the devicetree, there's no point in
> probing the device. We were actually requesting a zero sized 'kmalloc'
> array but since we were not touching the ZERO_SIZE_PTR afterwards,
> nothing bad was actually happening. Hence this is not really a fix but
> rather an improvement.
> 
> Reviewed-by: Alexandru Ardelean <ardeleanalex@gmail.com>
> Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Both applied.

Thanks,

J
> ---
> Nothing changed in v2.
> 
>  drivers/iio/temperature/ltc2983.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/iio/temperature/ltc2983.c b/drivers/iio/temperature/ltc2983.c
> index 22e6a26ce6b1..301c3f13fb26 100644
> --- a/drivers/iio/temperature/ltc2983.c
> +++ b/drivers/iio/temperature/ltc2983.c
> @@ -1275,6 +1275,11 @@ static int ltc2983_parse_dt(struct ltc2983_data *st)
>  			     &st->filter_notch_freq);
>  
>  	st->num_channels = of_get_available_child_count(dev->of_node);
> +	if (!st->num_channels) {
> +		dev_err(&st->spi->dev, "At least one channel must be given!");
> +		return -EINVAL;
> +	}
> +
>  	st->sensors = devm_kcalloc(dev, st->num_channels, sizeof(*st->sensors),
>  				   GFP_KERNEL);
>  	if (!st->sensors)
diff mbox series

Patch

diff --git a/drivers/iio/temperature/ltc2983.c b/drivers/iio/temperature/ltc2983.c
index 22e6a26ce6b1..301c3f13fb26 100644
--- a/drivers/iio/temperature/ltc2983.c
+++ b/drivers/iio/temperature/ltc2983.c
@@ -1275,6 +1275,11 @@  static int ltc2983_parse_dt(struct ltc2983_data *st)
 			     &st->filter_notch_freq);
 
 	st->num_channels = of_get_available_child_count(dev->of_node);
+	if (!st->num_channels) {
+		dev_err(&st->spi->dev, "At least one channel must be given!");
+		return -EINVAL;
+	}
+
 	st->sensors = devm_kcalloc(dev, st->num_channels, sizeof(*st->sensors),
 				   GFP_KERNEL);
 	if (!st->sensors)