irqchip/loongson-liointc: Fix potential dead lock
authorTiezhu Yang <yangtiezhu@loongson.cn>
Tue, 7 Jul 2020 02:12:51 +0000 (10:12 +0800)
committerMarc Zyngier <maz@kernel.org>
Fri, 17 Jul 2020 12:41:42 +0000 (13:41 +0100)
In the function liointc_set_type(), we need to call the function
irq_gc_unlock_irqrestore() before returning.

Fixes: dbb152267908 ("irqchip: Add driver for Loongson I/O Local Interrupt Controller")
Reported-by: Jianmin Lv <lvjianmin@loongson.cn>
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/1594087972-21715-8-git-send-email-yangtiezhu@loongson.cn
drivers/irqchip/irq-loongson-liointc.c

index 63b6147..6ef86a3 100644 (file)
@@ -114,6 +114,7 @@ static int liointc_set_type(struct irq_data *data, unsigned int type)
                liointc_set_bit(gc, LIOINTC_REG_INTC_POL, mask, false);
                break;
        default:
+               irq_gc_unlock_irqrestore(gc, flags);
                return -EINVAL;
        }
        irq_gc_unlock_irqrestore(gc, flags);