[PATCH 10/10] irqchip/gic-v5: Release ITS MMIO region on DT probe failure
Lorenzo Pieralisi
lpieralisi at kernel.org
Mon Nov 2 06:54:05 PST 2026
On Mon, Nov 02, 2026 at 01:33:03PM +0000, Sascha Bischoff wrote:
> of_io_request_and_map() reserves the ITS configuration frame region.
> If ITS initialisation fails after mapping it, the error path only
> unmaps the registers and leaves the region reserved.
>
> Keep the resource description and release the region on that path.
>
> Fixes: 57d72196dfc85 ("irqchip/gic-v5: Add GICv5 ITS support")
> Signed-off-by: Sascha Bischoff <sascha.bischoff at arm.com>
> ---
> drivers/irqchip/irq-gic-v5-its.c | 7 +++++++
> 1 file changed, 7 insertions(+)
A minor note on coding style below, other than that:
Acked-by: Lorenzo Pieralisi <lpieralisi at kernel.org>
>
> diff --git a/drivers/irqchip/irq-gic-v5-its.c b/drivers/irqchip/irq-gic-v5-its.c
> index c0f3982229194..91abe63cb5cf9 100644
> --- a/drivers/irqchip/irq-gic-v5-its.c
> +++ b/drivers/irqchip/irq-gic-v5-its.c
> @@ -1188,6 +1188,7 @@ static int __init gicv5_its_init_bases(void __iomem *its_base, struct fwnode_han
>
> static int __init gicv5_its_init(struct device_node *node)
> {
> + struct resource res;
FIR tree ordering.
https://docs.kernel.org/process/maintainer-tip.html
> void __iomem *its_base;
> int ret, idx;
>
> @@ -1197,6 +1198,11 @@ static int __init gicv5_its_init(struct device_node *node)
> return -ENODEV;
> }
>
> + /* Save the region to release if ITS setup fails after mapping it. */
> + ret = of_address_to_resource(node, idx, &res);
> + if (ret)
> + return ret;
> +
> its_base = of_io_request_and_map(node, idx, of_node_full_name(node));
> if (IS_ERR(its_base)) {
> pr_err("%pOF: unable to map GICv5 ITS_CONFIG_FRAME\n", node);
> @@ -1213,6 +1219,7 @@ static int __init gicv5_its_init(struct device_node *node)
>
> out_unmap:
> iounmap(its_base);
> + release_mem_region(res.start, resource_size(&res));
> return ret;
> }
>
>
> --
> 2.34.1
>
More information about the linux-arm-kernel
mailing list