• Sean Christopherson's avatar
    KVM: x86: Disallow writes to immutable feature MSRs after KVM_RUN · 0094f62c
    Sean Christopherson authored
    Disallow writes to feature MSRs after KVM_RUN to prevent userspace from
    changing the vCPU model after running the vCPU.  Similar to guest CPUID,
    KVM uses feature MSRs to configure intercepts, determine what operations
    are/aren't allowed, etc.  Changing the capabilities while the vCPU is
    active will at best yield unpredictable guest behavior, and at worst
    could be dangerous to KVM.
    
    Allow writing the current value, e.g. so that userspace can blindly set
    all MSRs when emulating RESET, and unconditionally allow writes to
    MSR_IA32_UCODE_REV so that userspace can emulate patch loads.
    
    Special case the VMX MSRs to keep the generic list small, i.e. so that
    KVM can do a linear walk of the generic list without incurring meaningful
    overhead.
    
    Cc: Like Xu <like.xu.linux@gmail.com>
    Cc: Yu Zhang <yu.c.zhang@linux.intel.com>
    Reviewed-by: default avatarXiaoyao Li <xiaoyao.li@intel.com>
    Link: https://lore.kernel.org/r/20230311004618.920745-7-seanjc@google.comSigned-off-by: default avatarSean Christopherson <seanjc@google.com>
    0094f62c
x86.c 360 KB