Re: [PATCH v7 1/4] gpio: mxc: fix race between chained IRQ handler install and probe completion
From: Linus Walleij
Date: Tue Oct 13 2026 - 16:59:16 EST
On Tue, Oct 13, 2026 at 8:03 AM Peng Fan (OSS) <peng.fan@xxxxxxxxxxx> wrote:
> From: Peng Fan <peng.fan@xxxxxxx>
>
> mxc_update_irq_chained_handler() is called before the IRQ domain, the
> generic IRQ chip, and the port list entry are set up. If an interrupt
> arrives in that window:
>
> - mx3_gpio_irq_handler() calls generic_handle_domain_irq() with
> port->domain still NULL.
> - mx2_gpio_irq_handler() walks mxc_gpio_ports, but the port has not
> been added to the list yet.
>
> Additionally, if any of the subsequent probe steps
> (gpio_generic_chip_init(), devm_gpiochip_add_data(),
> irq_domain_create_legacy(), or mxc_gpio_init_gc()) fail, the error
> paths never unregister the chained handler, leaving a dangling handler
> that points at freed memory.
>
> Move the handler installation after all its dependencies are ready and
> after list_add_tail(), so the handler is never live while the data
> structures it touches are incomplete, and is never installed if probe
> fails.
>
> Fixes: 5f6d1998adeb ("gpio: mxc: release the parent IRQ in runtime suspend")
> Assisted-by: LLM
> Reviewed-by: Frank Li <Frank.Li@xxxxxxx>
> Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
Reviewed-by: Linus Walleij <linusw@xxxxxxxxxx>
Yours,
Linus Walleij