Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: e500: always restore irqs

If find_linux_pte fails, IRQs will not be restored. This is unlikely
to happen in practice since it would have been reported as hanging
hosts, but it should of course be fixed anyway.

Cc: stable@vger.kernel.org
Reported-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

+2 -2
+2 -2
arch/powerpc/kvm/e500_mmu_host.c
··· 479 479 if (pte_present(pte)) { 480 480 wimg = (pte_val(pte) >> PTE_WIMGE_SHIFT) & 481 481 MAS2_WIMGE_MASK; 482 - local_irq_restore(flags); 483 482 } else { 484 483 local_irq_restore(flags); 485 484 pr_err_ratelimited("%s: pte not present: gfn %lx,pfn %lx\n", ··· 487 488 goto out; 488 489 } 489 490 } 490 - writable = kvmppc_e500_ref_setup(ref, gtlbe, pfn, wimg); 491 + local_irq_restore(flags); 491 492 493 + writable = kvmppc_e500_ref_setup(ref, gtlbe, pfn, wimg); 492 494 kvmppc_e500_setup_stlbe(&vcpu_e500->vcpu, gtlbe, tsize, 493 495 ref, gvaddr, stlbe); 494 496