• Thomas Gleixner's avatar
    x86/fpu: Mop up xfeatures_mask_uabi() · daddee24
    Thomas Gleixner authored
    Use the new fpu_user_cfg to retrieve the information instead of
    xfeatures_mask_uabi() which will be no longer correct when dynamically
    enabled features become available.
    
    Using fpu_user_cfg is appropriate when setting XCOMP_BV in the
    init_fpstate since it has space allocated for "max_features". But,
    normal fpstates might only have space for default xfeatures. Since
    XRSTOR* derives the format of the XSAVE buffer from XCOMP_BV, this can
    lead to XRSTOR reading out of bounds.
    
    So when copying actively used fpstate, simply read the XCOMP_BV features
    bits directly out of the fpstate instead.
    
    This correction courtesy of Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/20211014230739.408879849@linutronix.de
    daddee24
xstate.c 36.2 KB