2017-06-03 08:53:02

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH] iio: adc: meson-saradc: use NULL instead of 0 for pointer

On Sun, 28 May 2017 23:17:57 +0200
Martin Blumenstingl <[email protected]> wrote:

> Hi Paolo, Hi Jonathan,
>
> On Sun, May 28, 2017 at 4:43 PM, Jonathan Cameron <[email protected]> wrote:
> > On Sun, 28 May 2017 13:24:38 +0200
> > Paolo Cretaro <[email protected]> wrote:
> >
> >> Fix sparse warning: Using plain integer as NULL pointer
> >>
> >> Signed-off-by: Paolo Cretaro <[email protected]>
> > This looks fine to me, but ideally you should always try to include
> > the driver author - particularly in the case of patches to a recent
> > driver such as this one.
> >
> > To that end I've cc'd Martin.
> thanks for spotting this (and providing a patch to fix it)
> this looks good to me, so:
> Acked-by: Martin Blumenstingl <[email protected]>
>
> if you can wait until next weekend then I can also test this on real hardware.
I've applied it to the togreg branch of iio.git but as that always goes out
as testing for at least a few days first (which I will happily rebase) give
me a shout if anything goes wrong!

Jonathan
>
> > Jonathan
> >> ---
> >> drivers/iio/adc/meson_saradc.c | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/iio/adc/meson_saradc.c b/drivers/iio/adc/meson_saradc.c
> >> index 81cd39a57fe3..fb3f67a9ae1f 100644
> >> --- a/drivers/iio/adc/meson_saradc.c
> >> +++ b/drivers/iio/adc/meson_saradc.c
> >> @@ -481,7 +481,7 @@ static void meson_sar_adc_clear_fifo(struct iio_dev *indio_dev)
> >> if (!meson_sar_adc_get_fifo_count(indio_dev))
> >> break;
> >>
> >> - regmap_read(priv->regmap, MESON_SAR_ADC_FIFO_RD, 0);
> >> + regmap_read(priv->regmap, MESON_SAR_ADC_FIFO_RD, NULL);
> >> }
> >> }
> >>
> >
>
> Regards,
> Martin


2017-06-04 13:33:21

by Martin Blumenstingl

[permalink] [raw]
Subject: Re: [PATCH] iio: adc: meson-saradc: use NULL instead of 0 for pointer

Hi Paolo, Hi Jonathan,

On Sat, Jun 3, 2017 at 10:52 AM, Jonathan Cameron <[email protected]> wrote:
> On Sun, 28 May 2017 23:17:57 +0200
> Martin Blumenstingl <[email protected]> wrote:
>
>> Hi Paolo, Hi Jonathan,
>>
>> On Sun, May 28, 2017 at 4:43 PM, Jonathan Cameron <[email protected]> wrote:
>> > On Sun, 28 May 2017 13:24:38 +0200
>> > Paolo Cretaro <[email protected]> wrote:
>> >
>> >> Fix sparse warning: Using plain integer as NULL pointer
>> >>
>> >> Signed-off-by: Paolo Cretaro <[email protected]>
>> > This looks fine to me, but ideally you should always try to include
>> > the driver author - particularly in the case of patches to a recent
>> > driver such as this one.
>> >
>> > To that end I've cc'd Martin.
>> thanks for spotting this (and providing a patch to fix it)
>> this looks good to me, so:
>> Acked-by: Martin Blumenstingl <[email protected]>
>>
>> if you can wait until next weekend then I can also test this on real hardware.
> I've applied it to the togreg branch of iio.git but as that always goes out
> as testing for at least a few days first (which I will happily rebase) give
> me a shout if anything goes wrong!
I have tested this on actual hardware and it seems that there's a bug
in the meson-saradc driver (before and after this patch):
if there are still "old" values in the FIFO then the driver currently
crashes because regmap_read (regmap_mmio_read in case of the
meson-saradc driver to be precise) de-references the "value" pointer
(the parameter which we're trying to clean up here) -> this leads to a
NULL de-reference. this happens regardless of whether we are passing
"0" or "NULL"

I posted a patch which fixes the crash - and as a bonus this should
also fix the sparse warning reported by Paolo:
http://lists.infradead.org/pipermail/linux-amlogic/2017-June/003863.html

> Jonathan
>>
>> > Jonathan
>> >> ---
>> >> drivers/iio/adc/meson_saradc.c | 2 +-
>> >> 1 file changed, 1 insertion(+), 1 deletion(-)
>> >>
>> >> diff --git a/drivers/iio/adc/meson_saradc.c b/drivers/iio/adc/meson_saradc.c
>> >> index 81cd39a57fe3..fb3f67a9ae1f 100644
>> >> --- a/drivers/iio/adc/meson_saradc.c
>> >> +++ b/drivers/iio/adc/meson_saradc.c
>> >> @@ -481,7 +481,7 @@ static void meson_sar_adc_clear_fifo(struct iio_dev *indio_dev)
>> >> if (!meson_sar_adc_get_fifo_count(indio_dev))
>> >> break;
>> >>
>> >> - regmap_read(priv->regmap, MESON_SAR_ADC_FIFO_RD, 0);
>> >> + regmap_read(priv->regmap, MESON_SAR_ADC_FIFO_RD, NULL);
>> >> }
>> >> }
>> >>
>> >
>>
>> Regards,
>> Martin
>

2017-06-06 09:28:36

by Paolo Cretaro

[permalink] [raw]
Subject: Re: [PATCH] iio: adc: meson-saradc: use NULL instead of 0 for pointer

Il 04/06/2017 15:32, Martin Blumenstingl ha scritto:
> Hi Paolo, Hi Jonathan,
>
> On Sat, Jun 3, 2017 at 10:52 AM, Jonathan Cameron <[email protected]> wrote:
>> On Sun, 28 May 2017 23:17:57 +0200
>> Martin Blumenstingl <[email protected]> wrote:
>>
>>> Hi Paolo, Hi Jonathan,
>>>
>>> On Sun, May 28, 2017 at 4:43 PM, Jonathan Cameron <[email protected]> wrote:
>>>> On Sun, 28 May 2017 13:24:38 +0200
>>>> Paolo Cretaro <[email protected]> wrote:
>>>>
>>>>> Fix sparse warning: Using plain integer as NULL pointer
>>>>>
>>>>> Signed-off-by: Paolo Cretaro <[email protected]>
>>>> This looks fine to me, but ideally you should always try to include
>>>> the driver author - particularly in the case of patches to a recent
>>>> driver such as this one.
>>>>
>>>> To that end I've cc'd Martin.
>>> thanks for spotting this (and providing a patch to fix it)
>>> this looks good to me, so:
>>> Acked-by: Martin Blumenstingl <[email protected]>
>>>
>>> if you can wait until next weekend then I can also test this on real hardware.
>> I've applied it to the togreg branch of iio.git but as that always goes out
>> as testing for at least a few days first (which I will happily rebase) give
>> me a shout if anything goes wrong!
> I have tested this on actual hardware and it seems that there's a bug
> in the meson-saradc driver (before and after this patch):
> if there are still "old" values in the FIFO then the driver currently
> crashes because regmap_read (regmap_mmio_read in case of the
> meson-saradc driver to be precise) de-references the "value" pointer
> (the parameter which we're trying to clean up here) -> this leads to a
> NULL de-reference. this happens regardless of whether we are passing
> "0" or "NULL"
>
> I posted a patch which fixes the crash - and as a bonus this should
> also fix the sparse warning reported by Paolo:
> http://lists.infradead.org/pipermail/linux-amlogic/2017-June/003863.html
Nice, thanks!

Paolo
>
>> Jonathan
>>>
>>>> Jonathan
>>>>> ---
>>>>> drivers/iio/adc/meson_saradc.c | 2 +-
>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/iio/adc/meson_saradc.c b/drivers/iio/adc/meson_saradc.c
>>>>> index 81cd39a57fe3..fb3f67a9ae1f 100644
>>>>> --- a/drivers/iio/adc/meson_saradc.c
>>>>> +++ b/drivers/iio/adc/meson_saradc.c
>>>>> @@ -481,7 +481,7 @@ static void meson_sar_adc_clear_fifo(struct iio_dev *indio_dev)
>>>>> if (!meson_sar_adc_get_fifo_count(indio_dev))
>>>>> break;
>>>>>
>>>>> - regmap_read(priv->regmap, MESON_SAR_ADC_FIFO_RD, 0);
>>>>> + regmap_read(priv->regmap, MESON_SAR_ADC_FIFO_RD, NULL);
>>>>> }
>>>>> }
>>>>>
>>>>
>>>
>>> Regards,
>>> Martin
>>