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 > >