On Thu, Feb 22, 2024 at 05:33:59AM -0800, Bartosz Golaszewski wrote: > On Thu, 22 Feb 2024 14:25:24 +0100, Andy Shevchenko > <andriy.shevchenko@xxxxxxxxxxxxxxx> said: > > On Thu, Feb 22, 2024 at 10:37:06AM +0100, Bartosz Golaszewski wrote: > >> On Wed, Feb 21, 2024 at 8:28 PM Andy Shevchenko > >> <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > >> > > >> > After shuffling the code, error path wasn't updated correctly. > >> > Fix it here. > >> > gpiochip_irqchip_free_valid_mask(gc); > >> > err_remove_acpi_chip: > >> > acpi_gpiochip_remove(gc); > >> > + gpiochip_remove_pin_ranges(gc); > >> > err_remove_of_chip: > >> > gpiochip_free_hogs(gc); > >> > of_gpiochip_remove(gc); > >> > >> This undoes machine_gpiochip_add() and I think it also needs to be > >> moved before acpi_gpiochip_remove(). > > > > You mean it should be like > > > > gpiochip_irqchip_free_valid_mask(gc); > > gpiochip_free_hogs(gc); But should it be here... > > err_remove_acpi_chip: ...or here? I'm sorry I really need more (morning) coffee, maybe you can simply update yourself or submit a correct fix? > > acpi_gpiochip_remove(gc); > > gpiochip_remove_pin_ranges(gc); > > err_remove_of_chip: > > of_gpiochip_remove(gc); > > > > ? > > Yes, because the sequence is: > > ret = of_gpiochip_add(gc); > if (ret) > goto err_cleanup_desc_srcu; > > ret = gpiochip_add_pin_ranges(gc); > if (ret) > goto err_remove_of_chip; > > acpi_gpiochip_add(gc); > > machine_gpiochip_add(gc); > > ret = gpiochip_irqchip_init_valid_mask(gc); > if (ret) > goto err_remove_acpi_chip; -- With Best Regards, Andy Shevchenko