+22
−0
Loading
kunpeng inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I9QIWG CVE: NA ---------------------------------------------------------------------- The introduce of FEAT_NMI/FEAT_GICv3_NMI will cause a race problem that we may handle the normal interrupt in interrupt disabled context due to the withdraw of NMI interrupt. The flow will be like below: [interrupt disabled] <- normal interrupt pending, for example timer interrupt <- NMI occurs, ISR_EL1.nmi = 1 do_el1_interrupt() <- NMI withdraw, ISR_EL1.nmi = 0 ISR_EL1.nmi = 0, not an NMI interrupt gic_handle_irq() __gic_handle_irq_from_irqson() irqnr = gic_read_iar() <- Oops, ack and handle an normal interrupt in interrupt disabled context! Fix this by checking the interrupt status in __gic_handle_irq_from_irqson() and ignore the interrupt if we're in interrupt disabled context. Fixes: 0408b5bc ("irqchip/gic-v3: Implement FEAT_GICv3_NMI support") Signed-off-by:Yicong Yang <yangyicong@hisilicon.com> Signed-off-by:
Jie Liu <liujie375@h-partners.com>