• Paul Mackerras's avatar
    KVM: PPC: Book3S HV: Don't call real-mode XICS hypercall handlers if not enabled · 00bb6ae5
    Paul Mackerras authored
    When running a guest on a POWER9 system with the in-kernel XICS
    emulation disabled (for example by running QEMU with the parameter
    "-machine pseries,kernel_irqchip=off"), the kernel does not pass
    the XICS-related hypercalls such as H_CPPR up to userspace for
    emulation there as it should.
    
    The reason for this is that the real-mode handlers for these
    hypercalls don't check whether a XICS device has been instantiated
    before calling the xics-on-xive code.  That code doesn't check
    either, leading to potential NULL pointer dereferences because
    vcpu->arch.xive_vcpu is NULL.  Those dereferences won't cause an
    exception in real mode but will lead to kernel memory corruption.
    
    This fixes it by adding kvmppc_xics_enabled() checks before calling
    the XICS functions.
    
    Cc: stable@vger.kernel.org # v4.11+
    Fixes: 5af50993 ("KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller")
    Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
    00bb6ae5
book3s_hv_builtin.c 15.6 KB