io_apic_level_ack_pending() will end up in an infinite loop if entry->pin == -1. entry does not change, so it will keep reading -1.
Switched to breaking out of the loop. Fixes: f821102450a1 ("x86: IRQ Migration logic enhancement.") Signed-off-by: Jason Andryuk <jason.andr...@amd.com> --- Noticed during code inspection. --- xen/arch/x86/io_apic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index 17e6827f4b..b21f0515f5 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -1715,7 +1715,7 @@ static bool io_apic_level_ack_pending(unsigned int irq) pin = entry->pin; if (pin == -1) - continue; + break; reg = io_apic_read(entry->apic, 0x10 + pin*2); /* Is the remote IRR bit set? */ if (reg & IO_APIC_REDIR_REMOTE_IRR) { -- 2.51.0