2018-11-23 00:55:43

by Nicholas Mc Guire

[permalink] [raw]
Subject: [PATCH] iio: adc: meson-saradc: check for devm_kasprintf failure

devm_kasprintf() may return NULL on failure of internal allocation thus
the assignments to init.name are not safe if not checked. On error
meson_sar_adc_clk_init() returns negative values so -ENOMEM in the
(unlikely) failure case of devm_kasprintf() should be fine here.

Signed-off-by: Nicholas Mc Guire <[email protected]>
Fixes: 3adbf3427330 ("iio: adc: add a driver for the SAR ADC found in Amlogic Meson SoCs")
---

Problem located with an experimental coccinelle script

Patch was compile tested with: multi_v7_defconfig (implies ARCH_MESON=y &
MESON_SARADC=y)

Patch is against 4.20-rc3 (localversion-next is next-20181122)

drivers/iio/adc/meson_saradc.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/drivers/iio/adc/meson_saradc.c b/drivers/iio/adc/meson_saradc.c
index 028ccd2..672a5de 100644
--- a/drivers/iio/adc/meson_saradc.c
+++ b/drivers/iio/adc/meson_saradc.c
@@ -589,6 +589,9 @@ static int meson_sar_adc_clk_init(struct iio_dev *indio_dev,

init.name = devm_kasprintf(&indio_dev->dev, GFP_KERNEL, "%pOF#adc_div",
indio_dev->dev.of_node);
+ if (!init.name)
+ return -ENOMEM;
+
init.flags = 0;
init.ops = &clk_divider_ops;
clk_parents[0] = __clk_get_name(priv->clkin);
@@ -608,6 +611,9 @@ static int meson_sar_adc_clk_init(struct iio_dev *indio_dev,

init.name = devm_kasprintf(&indio_dev->dev, GFP_KERNEL, "%pOF#adc_en",
indio_dev->dev.of_node);
+ if (!init.name)
+ return -ENOMEM;
+
init.flags = CLK_SET_RATE_PARENT;
init.ops = &clk_gate_ops;
clk_parents[0] = __clk_get_name(priv->adc_div_clk);
--
2.1.4



2018-11-24 07:41:51

by Martin Blumenstingl

[permalink] [raw]
Subject: Re: [PATCH] iio: adc: meson-saradc: check for devm_kasprintf failure

On Thu, Nov 22, 2018 at 8:52 AM Nicholas Mc Guire <[email protected]> wrote:
>
> devm_kasprintf() may return NULL on failure of internal allocation thus
> the assignments to init.name are not safe if not checked. On error
> meson_sar_adc_clk_init() returns negative values so -ENOMEM in the
> (unlikely) failure case of devm_kasprintf() should be fine here.
>
> Signed-off-by: Nicholas Mc Guire <[email protected]>
> Fixes: 3adbf3427330 ("iio: adc: add a driver for the SAR ADC found in Amlogic Meson SoCs")
Acked-by: Martin Blumenstingl <[email protected]>

thank you for the patch!
I tested the non-error case on my Odroid-C1 and it still works fine.


Regards
Martin

2018-11-25 10:41:29

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH] iio: adc: meson-saradc: check for devm_kasprintf failure

On Thu, 22 Nov 2018 22:44:55 +0100
Martin Blumenstingl <[email protected]> wrote:

> On Thu, Nov 22, 2018 at 8:52 AM Nicholas Mc Guire <[email protected]> wrote:
> >
> > devm_kasprintf() may return NULL on failure of internal allocation thus
> > the assignments to init.name are not safe if not checked. On error
> > meson_sar_adc_clk_init() returns negative values so -ENOMEM in the
> > (unlikely) failure case of devm_kasprintf() should be fine here.
> >
> > Signed-off-by: Nicholas Mc Guire <[email protected]>
> > Fixes: 3adbf3427330 ("iio: adc: add a driver for the SAR ADC found in Amlogic Meson SoCs")
> Acked-by: Martin Blumenstingl <[email protected]>
>
> thank you for the patch!
> I tested the non-error case on my Odroid-C1 and it still works fine.
Applied. I also added a tested by tag for you Martin as it's always nice
for the log to reflect when people make the effort!

Applied to the togreg branch of iio.git and pushed out as testing for
the autobuilders to play with it.

Thanks,

Jonathan

>
>
> Regards
> Martin