On Fri, Mar 29, 2024 at 5:16 PM Bartosz Golaszewski <brgl@xxxxxxxx> wrote: > On Fri, 29 Mar 2024 15:11:21 +0100, Hans de Goede <hans@xxxxxxxxx> said: ... > Thanks for the report. I hope I'm not being naive here but would the following > one-liner work? > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c > index ce94e37bcbee..69f365ccbfd8 100644 > --- a/drivers/gpio/gpiolib.c > +++ b/drivers/gpio/gpiolib.c > @@ -1179,7 +1179,7 @@ struct gpio_device *gpio_device_find(const void *data, > > gc = srcu_dereference(gdev->chip, &gdev->srcu); > > - if (gc && match(gc, data)) > + if (device_is_registered(&gdev->dev) && gc && match(gc, data)) > return gpio_device_get(gdev); In case you are going with this approach, wouldn't be better to if (!device_is_register(...)) continue; gc = ... ? > } > > This would make gpio_device_find() ignore any GPIO device that's not yet > registered on the GPIO bus which is almost the last step of the registration > process right before creating the sysfs attributes. -- With Best Regards, Andy Shevchenko