[PATCH v1] irqchip/atmel-aic5: Free SMR cache on init failure
Nicolas Ferre
nicolas.ferre at microchip.com
Fri May 15 02:58:13 PDT 2026
On 14/05/2026 at 01:31, Yuho Choi wrote:
> sama5d2_aic5_of_init() allocates the SMR cache before calling
> aic5_of_init(). If that fails, the cache is left allocated even though
> no IRQ domain was installed and the cache will not be used.
>
> Free the cache on the failure path and clear the global pointer.
No aic5 = no viable system to run on: I'm not sure it's worth
considering the case.
> Fixes: a50ac562ef48 ("irqchip/atmel-aic5: Handle suspend to RAM")
> Signed-off-by: Yuho Choi <dbgh9129 at gmail.com>
> ---
> drivers/irqchip/irq-atmel-aic5.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/irqchip/irq-atmel-aic5.c b/drivers/irqchip/irq-atmel-aic5.c
> index 1f14b401f71d..58650eb16880 100644
> --- a/drivers/irqchip/irq-atmel-aic5.c
> +++ b/drivers/irqchip/irq-atmel-aic5.c
> @@ -358,13 +358,22 @@ static int __init sama5d2_aic5_of_init(struct device_node *node,
> struct device_node *parent)
> {
> #ifdef CONFIG_PM
> + int rc = 0;
> smr_cache = kcalloc(DIV_ROUND_UP(NR_SAMA5D2_IRQS, 32) * 32,
> sizeof(*smr_cache), GFP_KERNEL);
> if (!smr_cache)
> return -ENOMEM;
> -#endif
>
> + rc = aic5_of_init(node, parent, NR_SAMA5D2_IRQS);
> + if (rc) {
> + kfree(smr_cache);
> + smr_cache = NULL;
> + }
> +
> + return rc;
> +#else
> return aic5_of_init(node, parent, NR_SAMA5D2_IRQS);
> +#endif
> }
> IRQCHIP_DECLARE(sama5d2_aic5, "atmel,sama5d2-aic", sama5d2_aic5_of_init);
>
> --
> 2.43.0
>
More information about the linux-arm-kernel
mailing list