linux/arch/powerpc/kvm
Paul Mackerras 00bb6ae500 KVM: PPC: Book3S HV: Don't call real-mode XICS hypercall handlers if not enabled
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: 5af5099385 ("KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller")
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2017-11-01 15:09:32 +11:00
..
book3s_32_mmu_host.c powerpc/mm: Move hash related mmu-*.h headers to book3s/ 2016-03-03 21:19:21 +11:00
book3s_32_mmu.c KVM: PPC: Book3S PR: Ratelimit copy data failure error messages 2017-02-17 14:03:35 +11:00
book3s_32_sr.S
book3s_64_mmu_host.c * ARM: HYP mode stub supports kexec/kdump on 32-bit; improved PMU 2017-05-08 12:37:56 -07:00
book3s_64_mmu_hv.c KVM: PPC: Book3S HV: Explicitly disable HPT operations on radix guests 2017-10-16 08:09:53 +11:00
book3s_64_mmu_radix.c Merge branch 'topic/ppc-kvm' into next 2017-08-17 23:14:17 +10:00
book3s_64_mmu.c KVM: PPC: Book3S PR: Preserve storage control bits 2017-04-20 11:38:14 +10:00
book3s_64_slb.S KVM: PPC: Book3S PR: Rework SLB switching code 2014-05-30 14:26:30 +02:00
book3s_64_vio_hv.c powerpc/mm: Rename find_linux_pte_or_hugepte() 2017-08-17 23:13:46 +10:00
book3s_64_vio.c KVM: PPC: Book3S HV: Protect updates to spapr_tce_tables list 2017-08-30 14:59:31 +10:00
book3s_emulate.c KVM: PPC: Book3S PR: Do not fail emulation with mtspr/mfspr for unknown SPRs 2017-04-20 11:39:32 +10:00
book3s_exports.c KVM: PPC: Make shared struct aka magic page guest endian 2014-05-30 14:26:21 +02:00
book3s_hv_builtin.c KVM: PPC: Book3S HV: Don't call real-mode XICS hypercall handlers if not enabled 2017-11-01 15:09:32 +11:00
book3s_hv_hmi.c powerpc: move hmi.c to arch/powerpc/kvm/ 2016-09-09 16:18:07 +10:00
book3s_hv_interrupts.S KVM: PPC: Book3S HV: Close race with testing for signals on guest entry 2017-07-01 18:59:38 +10:00
book3s_hv_ras.c KVM: PPC: Book3S HV: Exit guest upon MCE when FWNMI capability is enabled 2017-06-22 11:24:57 +10:00
book3s_hv_rm_mmu.c Merge remote-tracking branch 'remotes/powerpc/topic/ppc-kvm' into kvm-ppc-next 2017-08-31 12:37:03 +10:00
book3s_hv_rm_xics.c Merge branch 'kvm-ppc-next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc into HEAD 2017-05-09 11:50:01 +02:00
book3s_hv_rm_xive.c KVM: PPC: Book3S HV: Don't access XIVE PIPR register using byte accesses 2017-09-12 16:02:07 +10:00
book3s_hv_rmhandlers.S KVM: PPC: Book3S HV: Handle unexpected interrupts better 2017-10-14 13:35:51 +11:00
book3s_hv.c KVM: PPC: Book3S HV: Use ARRAY_SIZE macro 2017-10-14 13:39:49 +11:00
book3s_interrupts.S powerpc: Define and use PPC64_ELF_ABI_v2/v1 2016-06-14 13:58:27 +10:00
book3s_mmu_hpte.c sched/headers: Prepare to use <linux/rcuupdate.h> instead of <linux/rculist.h> in <linux/sched.h> 2017-03-02 08:42:38 +01:00
book3s_paired_singles.c powerpc: Create disable_kernel_{fp,altivec,vsx,spe}() 2015-12-01 13:52:25 +11:00
book3s_pr_papr.c KVM: PPC: Book3S PR: Enable in-kernel TCE handlers for PR KVM 2017-10-14 16:38:19 +11:00
book3s_pr.c KVM: add kvm_{test,clear}_request to replace {test,clear}_bit 2017-04-27 14:12:22 +02:00
book3s_rmhandlers.S powerpc: Define and use PPC64_ELF_ABI_v2/v1 2016-06-14 13:58:27 +10:00
book3s_rtas.c KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller 2017-04-27 21:37:29 +10:00
book3s_segment.S KVM: PPC: Book3S: 64-bit CONFIG_RELOCATABLE support for interrupts 2017-01-31 19:07:39 +11:00
book3s_xics.c Merge branch 'kvm-ppc-next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc into HEAD 2017-05-09 11:50:01 +02:00
book3s_xics.h KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller 2017-04-27 21:37:29 +10:00
book3s_xive_template.c KVM: PPC: Book3S HV: Don't access XIVE PIPR register using byte accesses 2017-09-12 16:02:07 +10:00
book3s_xive.c KVM: PPC: Book3S: Fix server always zero from kvmppc_xive_get_xive() 2017-10-03 17:58:16 +02:00
book3s_xive.h KVM: PPC: Book3S: Fix server always zero from kvmppc_xive_get_xive() 2017-10-03 17:58:16 +02:00
book3s.c * ARM: HYP mode stub supports kexec/kdump on 32-bit; improved PMU 2017-05-08 12:37:56 -07:00
book3s.h kvm: Fix page ageing bugs 2014-09-24 14:07:58 +02:00
booke_emulate.c KVM: PPC: BOOKE: Emulate debug registers and exception 2014-09-22 10:11:33 +02:00
booke_interrupts.S KVM: PPC: Remove 440 support 2014-07-28 15:23:15 +02:00
booke.c KVM: add kvm_request_pending 2017-06-04 16:53:00 +02:00
booke.h KVM: PPC: Book3e: Add AltiVec support 2014-09-22 10:11:32 +02:00
bookehv_interrupts.S powerpc/kvm: common sw breakpoint instr across ppc 2014-09-22 10:11:36 +02:00
e500_emulate.c KVM: PPC: e500: Emulate TMCFG0 TMRN register 2015-10-15 15:58:16 +11:00
e500_mmu_host.c KVM: PPC: BookE: Use vma_pages function 2017-10-14 13:39:49 +11:00
e500_mmu_host.h
e500_mmu.c KVM: PPC: e500: Rename jump labels in kvmppc_e500_tlb_init() 2016-09-13 14:32:47 +10:00
e500.c KVM: PPC: e500: Fix some NULL dereferences on error 2017-08-31 12:36:44 +10:00
e500.h kvm: rename pfn_t to kvm_pfn_t 2016-01-15 17:56:32 -08:00
e500mc.c KVM: PPC: e500mc: Fix a NULL dereference 2017-08-31 12:36:44 +10:00
emulate_loadstore.c KVM: PPC: Add MMIO emulation for remaining floating-point instructions 2017-04-20 11:37:44 +10:00
emulate.c KVM: PPC: Book3S HV: Enable guests to use large decrementer mode on POWER9 2017-06-19 14:02:04 +10:00
fpu.S
irq.h KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller 2017-04-27 21:37:29 +10:00
Kconfig KVM: PPC: Book3S PR: Don't include SPAPR TCE code on non-pseries platforms 2017-05-12 15:32:30 +10:00
Makefile KVM: PPC: Book3S PR: Don't include SPAPR TCE code on non-pseries platforms 2017-05-12 15:32:30 +10:00
mpic.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
powerpc.c KVM: add spinlock optimization framework 2017-08-08 10:57:43 +02:00
timing.c KVM: PPC: Remove DCR handling 2014-07-28 19:29:15 +02:00
timing.h KVM: PPC: Remove DCR handling 2014-07-28 19:29:15 +02:00
trace_book3s.h KVM: PPC: Book3S HV: Tracepoints for KVM HV guest interactions 2014-12-17 13:29:27 +01:00
trace_booke.h KVM: PPC: BookE: Improve irq inject tracepoint 2014-12-15 13:27:23 +01:00
trace_hv.h KVM: PPC: Book3S HV: Comment style and print format fixups 2016-11-28 11:48:47 +11:00
trace_pr.h kvm: rename pfn_t to kvm_pfn_t 2016-01-15 17:56:32 -08:00
trace.h