• Sean Christopherson's avatar
    x86/fpu: Allow caller to constrain xfeatures when copying to uabi buffer · 18164f66
    Sean Christopherson authored
    Plumb an xfeatures mask into __copy_xstate_to_uabi_buf() so that KVM can
    constrain which xfeatures are saved into the userspace buffer without
    having to modify the user_xfeatures field in KVM's guest_fpu state.
    
    KVM's ABI for KVM_GET_XSAVE{2} is that features that are not exposed to
    guest must not show up in the effective xstate_bv field of the buffer.
    Saving only the guest-supported xfeatures allows userspace to load the
    saved state on a different host with a fewer xfeatures, so long as the
    target host supports the xfeatures that are exposed to the guest.
    
    KVM currently sets user_xfeatures directly to restrict KVM_GET_XSAVE{2} to
    the set of guest-supported xfeatures, but doing so broke KVM's historical
    ABI for KVM_SET_XSAVE, which allows userspace to load any xfeatures that
    are supported by the *host*.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20230928001956.924301-2-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    18164f66
core.c 24.7 KB