Re: [PATCH v5 7/7] gpiolib: let the character device free its IRQs first on chip removal

From: Andy Shevchenko

Date: Tue Nov 03 2026 - 06:37:54 EST


On Tue, Nov 03, 2026 at 12:32:40PM +0200, Adrian Ambrozewicz wrote:
> gpiochip_remove() force-frees the remaining IRQs, removes the irqchip,
> and only then calls the device notifier on which the character device
> frees its own IRQs. The character device can then free an IRQ it no
> longer owns: after its mapping was disposed of and the number reused, or
> from a release that races gpiod_free_irqs() and
> gpiochip_irqchip_remove(). free_irq() then warns "Trying to free
> already-free IRQ" or uses a disposed descriptor.
>
> Call the notifier once the chip pointer is cleared and the SRCU grace
> period has elapsed, when no ioctl can request IRQs any more, and free
> the remaining IRQs after it. Have the release paths free their IRQs
> before unregistering from the notifier, under the lock its callback
> takes (config_mutex, or a new mutex for v1 line events). Herve Codina
> first proposed calling the notifier earlier.
>
> IRQs that in-kernel users leave requested are now freed after the chip
> pointer is cleared, when gpiod_*() calls on the chip fail.
>
> Reproduced with a test-only chip on the hierarchical irqchip: both races
> warn in all 30 cycles; with this change, none does.

> Link: https://lore.kernel.org/all/20240227113426.253232-1-herve.codina@xxxxxxxxxxx/

No. Either make it Closes tag (if appropriate) or add a reference like

Link: $URL [1]

and mention [1] in the text, otherwise it makes Linus T. grumpy. I think
I already told that.

--
With Best Regards,
Andy Shevchenko