diff options
author | Marc Zyngier <maz@kernel.org> | 2022-08-08 11:50:20 +0100 |
---|---|---|
committer | Marc Zyngier <maz@kernel.org> | 2022-08-09 06:54:05 +0100 |
commit | 7e4fd7a1a6fdf23d069eeb0ae0e8e46b9fb40723 (patch) | |
tree | c3a1b02d13d3ee1a6de2eadb15d19501413a7882 /drivers/irqchip/irq-loongson-eiointc.c | |
parent | fda7409a8fcfa457814f8186f2861a9f00008e75 (diff) | |
download | linux-7e4fd7a1a6fdf23d069eeb0ae0e8e46b9fb40723.tar.bz2 |
irqchip/loongarch: Fix irq_domain_alloc_fwnode() abuse
The recently merged LoongArch drivers paper over the lack of
topology information by creating a bunch of fwnodes for the
irqchips. So far, so good.
However, irq_domain_alloc_fwnode() is supposed to take a PA, and
not a kernel VA blindly cast as a PA, potentially disclosing
kernel VAs to userspace. In some other cases, even NULL is used
as the PA, which is entertaining.
Fix this by using the actual PA of the block when available,
and switch to a named fwnode in the other cases.
Signed-off-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Jianmin Lv <lvjianmin@loongson.cn>
Link: https://lore.kernel.org/r/20220808105020.2689757-1-maz@kernel.org
Diffstat (limited to 'drivers/irqchip/irq-loongson-eiointc.c')
-rw-r--r-- | drivers/irqchip/irq-loongson-eiointc.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/irqchip/irq-loongson-eiointc.c b/drivers/irqchip/irq-loongson-eiointc.c index bffb7b3128e8..16e9af8d8b1e 100644 --- a/drivers/irqchip/irq-loongson-eiointc.c +++ b/drivers/irqchip/irq-loongson-eiointc.c @@ -348,7 +348,8 @@ int __init eiointc_acpi_init(struct irq_domain *parent, if (!priv) return -ENOMEM; - priv->domain_handle = irq_domain_alloc_fwnode((phys_addr_t *)acpi_eiointc); + priv->domain_handle = irq_domain_alloc_named_id_fwnode("EIOPIC", + acpi_eiointc->node); if (!priv->domain_handle) { pr_err("Unable to allocate domain handle\n"); goto out_free_priv; |