Re: NULL-ptr deref in kvm_arch_vcpu_ioctl under AMD CPUs

From: Paolo Bonzini
Date: Sat Sep 10 2016 - 02:44:22 EST

> Hi Paolo,
> I've noticed that KVM is not actually enabled on my machines. /dev/kvm
> is missing. If I mknod it manually, opens return ENODEV.
> After several hours of debugging I figured that it seems to be caused by:
> commit 91fa0f8e9e2937fd9360f326ad60d51908347afd
> Author: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> Date: Wed Jun 15 20:55:08 2016 +0200
> KVM: x86: always use "acknowledge interrupt on exit"
> If I move VM_EXIT_ACK_INTR_ON_EXIT from min back to opt. /dev/kvm
> become functional again (at least I can open it).
> To make it clear, it all happens inside of qemu instance. I've tried
> using different cpus in qemu, including "host" cpu which is pretty
> capable:
> model name : Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
> pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm
> constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx
> ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt
> tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm
> vnmi ept fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
> So why am I missing VM_EXIT_ACK_INTR_ON_EXIT feature? How does it work
> for other users? And how should I fix it in a proper way?

You need to upgrade your host kernel to 3.16 (or possibly 3.17, but I
think it's 3.16). This is a virtualization feature, and it is not
provided by the processor (as is the case for "-cpu host" features);
it's provided by the host kernel.