Hi Bartosz, On Mo, 2024-02-19 at 16:33 +0100, Bartosz Golaszewski wrote: > On Thu, Feb 15, 2024 at 11:03 AM Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> wrote: > > > > On Mi, 2024-02-14 at 17:23 +0100, Théo Lebrun wrote: > > [...] > > > diff --git a/drivers/gpio/gpio-nomadik.c b/drivers/gpio/gpio-nomadik.c > > > new file mode 100644 > > > index 000000000000..e39477e1a58f > > > --- /dev/null > > > +++ b/drivers/gpio/gpio-nomadik.c > > > @@ -0,0 +1,660 @@ > > [...] > > > +static int nmk_gpio_probe(struct platform_device *dev) > > > +{ > > [...] > > > + ret = gpiochip_add_data(chip, nmk_chip); > > > > Use devm_gpiochip_add_data() to cleanup on unbind, before nmk_chip goes > > away. Or make the driver un-unbindable via suppress_bind_attrs. In that > > case you could drop devm_ prefixes everywhere for consistency. > > > > No! Why? What about error paths in probe() where you want to undo everything? Brain fog moment. I was triggered by the mixture of devm_ and non-devm_ calls and jumped to the wrong conclusion. Yes, keeping devm_ for error cleanup is of course correct, and with suppress_bind_attrs it'd even be ok to use non-devm_ gpiochip_add_data(), as long as there can be no error return afterwards. regards Philipp