irqchip/gic-v5: iwb: Fix iounmap probe failure path

The 0-day bot reported that on the failure path the driver iounmap()s IWB
resources that are managed through devm_ioremap(), which is clearly wrong
because the driver would end up unmapping the MMIO resource twice on
probing failure.

Fix this by removing the error path altogether and by letting devres manage
the iounmapping on clean-up.

Fixes: 695949d8b1 ("irqchip/gic-v5: Add GICv5 IWB support")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/all/20250801-gic-v5-fixes-6-17-v1-1-4fcedaccf9e6@kernel.org
Closes: https://lore.kernel.org/oe-kbuild-all/202508010038.N3r4ZmII-lkp@intel.com
This commit is contained in:
Lorenzo Pieralisi 2025-08-01 09:58:18 +02:00 committed by Thomas Gleixner
parent 3c3d7dbab2
commit a8913d54ab
1 changed files with 2 additions and 9 deletions

View File

@ -241,7 +241,6 @@ static int gicv5_iwb_device_probe(struct platform_device *pdev)
struct gicv5_iwb_chip_data *iwb_node; struct gicv5_iwb_chip_data *iwb_node;
void __iomem *iwb_base; void __iomem *iwb_base;
struct resource *res; struct resource *res;
int ret;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) if (!res)
@ -254,16 +253,10 @@ static int gicv5_iwb_device_probe(struct platform_device *pdev)
} }
iwb_node = gicv5_iwb_init_bases(iwb_base, pdev); iwb_node = gicv5_iwb_init_bases(iwb_base, pdev);
if (IS_ERR(iwb_node)) { if (IS_ERR(iwb_node))
ret = PTR_ERR(iwb_node); return PTR_ERR(iwb_node);
goto out_unmap;
}
return 0; return 0;
out_unmap:
iounmap(iwb_base);
return ret;
} }
static const struct of_device_id gicv5_iwb_of_match[] = { static const struct of_device_id gicv5_iwb_of_match[] = {