Commit e3893386 authored by Grygorii Strashko's avatar Grygorii Strashko Committed by Linus Walleij

gpiolib: irqchip: use irq_find_mapping while removing irqchip

There is no guarantee that VIRQs will be allocated sequentially
for gpio irqchip in gpiochip_irqchip_add().
Therefore, it's unsafe to dispose VIRQ in gpiochip_irqchip_remove()
basing on index relatively to stored irq_base value.

Hence, use irq_find_mapping for VIRQ finding  in gpiochip_irqchip_remove()
instead of irq_base + index.
Reported-by: default avatarWang, Yalin <>
Signed-off-by: default avatarGrygorii Strashko <>
Signed-off-by: Linus Walleij's avatarLinus Walleij <>
parent dcdc3018
......@@ -514,7 +514,8 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip)
/* Remove all IRQ mappings and delete the domain */
if (gpiochip->irqdomain) {
for (offset = 0; offset < gpiochip->ngpio; offset++)
irq_dispose_mapping(gpiochip->irq_base + offset);
irq_find_mapping(gpiochip->irqdomain, offset));
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment