Re: [PATCH v3 2/2] irqchip/imx-irqsteer: Validate IRQ count before creating domain

From: Frank Li

Date: Wed Aug 05 2026 - 16:39:56 EST


On Wed, Aug 05, 2026 at 04:27:43PM -0300, Fabio Estevam wrote:
> From: Fabio Estevam <festevam@xxxxxxxxxxxx>
>
> The IRQ count is validated after creating the IRQ domain. If it is
> invalid, probe returns without removing the domain, leaving its host
> data pointing at devm-managed memory that is freed on probe failure.
>
> Validate the count before allocating resources to avoid the leak and
> dangling pointer.
>
> Fixes: 28528fca4908 ("irqchip/imx-irqsteer: Add multi output interrupts support")
> Signed-off-by: Fabio Estevam <festevam@xxxxxxxxxxxx>
> ---

Reviewed-by: Frank Li <Frank.Li@xxxxxxx>

> Changes since v2:
> - Newly introduced.
>
> drivers/irqchip/irq-imx-irqsteer.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/irqchip/irq-imx-irqsteer.c b/drivers/irqchip/irq-imx-irqsteer.c
> index 653e25115083..55aec60dee40 100644
> --- a/drivers/irqchip/irq-imx-irqsteer.c
> +++ b/drivers/irqchip/irq-imx-irqsteer.c
> @@ -217,6 +217,8 @@ static int imx_irqsteer_probe(struct platform_device *pdev)
> */
> data->irq_count = DIV_ROUND_UP(irqs_num, 64);
> data->reg_num = irqs_num / 32;
> + if (!data->irq_count || data->irq_count > CHAN_MAX_OUTPUT_INT)
> + return -EINVAL;
>
> if (IS_ENABLED(CONFIG_PM)) {
> data->saved_reg = devm_kzalloc(&pdev->dev,
> @@ -250,11 +252,6 @@ static int imx_irqsteer_probe(struct platform_device *pdev)
> }
> irq_domain_set_pm_device(data->domain, &pdev->dev);
>
> - if (!data->irq_count || data->irq_count > CHAN_MAX_OUTPUT_INT) {
> - ret = -EINVAL;
> - goto out;
> - }
> -
> for (i = 0; i < data->irq_count; i++) {
> data->irq[i] = irq_of_parse_and_map(np, i);
> if (!data->irq[i])
> --
> 2.43.0
>
>