Re: [PATCH] gpio: wcove: remove platform_set_drvdata() + cleanup probe

From: Alexandru Ardelean
Date: Thu Jul 08 2021 - 03:03:35 EST


On Wed, 7 Jul 2021 at 17:09, Andy Shevchenko
<andriy.shevchenko@xxxxxxxxx> wrote:
>
> On Wed, Jul 07, 2021 at 04:52:26PM +0300, Alexandru Ardelean wrote:
> > The platform_set_drvdata() call is only useful if we need to retrieve back
> > the private information.
> > Since the driver doesn't do that, it's not useful to have it.
>
> This is fine.
>
> > This change also changes the probe order a bit, moving the
> > devm_gpiochip_add_data() as the last call. This means that when the
> > gpiochip is registered [and available to consumers], it should be
> > initialized.
> >
> > It's still possible that the devm_gpiochip_add_data() call could fail,
> > leaving the chip in a partially initialized state, but that was possible
> > even before this change; it was just some other partially initialized
> > state.
>
> ...
>
> > /* Enable GPIO0 interrupts */
>
> ^^^^^
>
> > + return devm_gpiochip_add_data(dev, &wg->chip, wg);
>
> This is dangerous change. How did you test it?
>
> The handler now can be called before chip and actual handling code is
> registered. It means at least two possible (bad) scenarios:
> 1) the handler may dereference dangling or NULL pointer;
> 2) the IRQ may be level interrupt and we may got 100000 IRQs and
> IRQ core will disable it leaving device completely unfunctional.


Makes sense.
Let's drop this :)


>
> --
> With Best Regards,
> Andy Shevchenko
>
>