lkml.org 
[lkml]   [2021]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch V4 18/65] x86/fpu: Remove fpstate_sanitize_xstate()
    No more users.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    ---
    V2: New patch
    ---
    arch/x86/include/asm/fpu/internal.h | 2
    arch/x86/kernel/fpu/xstate.c | 79 ------------------------------------
    2 files changed, 81 deletions(-)

    --- a/arch/x86/include/asm/fpu/internal.h
    +++ b/arch/x86/include/asm/fpu/internal.h
    @@ -86,8 +86,6 @@ extern void fpstate_init_soft(struct swr
    static inline void fpstate_init_soft(struct swregs_state *soft) {}
    #endif

    -extern void fpstate_sanitize_xstate(struct fpu *fpu);
    -
    #define user_insn(insn, output, input...) \
    ({ \
    int err; \
    --- a/arch/x86/kernel/fpu/xstate.c
    +++ b/arch/x86/kernel/fpu/xstate.c
    @@ -129,85 +129,6 @@ static bool xfeature_is_supervisor(int x
    }

    /*
    - * When executing XSAVEOPT (or other optimized XSAVE instructions), if
    - * a processor implementation detects that an FPU state component is still
    - * (or is again) in its initialized state, it may clear the corresponding
    - * bit in the header.xfeatures field, and can skip the writeout of registers
    - * to the corresponding memory layout.
    - *
    - * This means that when the bit is zero, the state component might still contain
    - * some previous - non-initialized register state.
    - *
    - * Before writing xstate information to user-space we sanitize those components,
    - * to always ensure that the memory layout of a feature will be in the init state
    - * if the corresponding header bit is zero. This is to ensure that user-space doesn't
    - * see some stale state in the memory layout during signal handling, debugging etc.
    - */
    -void fpstate_sanitize_xstate(struct fpu *fpu)
    -{
    - struct fxregs_state *fx = &fpu->state.fxsave;
    - int feature_bit;
    - u64 xfeatures;
    -
    - if (!use_xsaveopt())
    - return;
    -
    - xfeatures = fpu->state.xsave.header.xfeatures;
    -
    - /*
    - * None of the feature bits are in init state. So nothing else
    - * to do for us, as the memory layout is up to date.
    - */
    - if ((xfeatures & xfeatures_mask_all) == xfeatures_mask_all)
    - return;
    -
    - /*
    - * FP is in init state
    - */
    - if (!(xfeatures & XFEATURE_MASK_FP)) {
    - fx->cwd = 0x37f;
    - fx->swd = 0;
    - fx->twd = 0;
    - fx->fop = 0;
    - fx->rip = 0;
    - fx->rdp = 0;
    - memset(fx->st_space, 0, sizeof(fx->st_space));
    - }
    -
    - /*
    - * SSE is in init state
    - */
    - if (!(xfeatures & XFEATURE_MASK_SSE))
    - memset(fx->xmm_space, 0, sizeof(fx->xmm_space));
    -
    - /*
    - * First two features are FPU and SSE, which above we handled
    - * in a special way already:
    - */
    - feature_bit = 0x2;
    - xfeatures = (xfeatures_mask_user() & ~xfeatures) >> 2;
    -
    - /*
    - * Update all the remaining memory layouts according to their
    - * standard xstate layout, if their header bit is in the init
    - * state:
    - */
    - while (xfeatures) {
    - if (xfeatures & 0x1) {
    - int offset = xstate_comp_offsets[feature_bit];
    - int size = xstate_sizes[feature_bit];
    -
    - memcpy((void *)fx + offset,
    - (void *)&init_fpstate.xsave + offset,
    - size);
    - }
    -
    - xfeatures >>= 1;
    - feature_bit++;
    - }
    -}
    -
    -/*
    * Enable the extended processor state save/restore feature.
    * Called once per CPU onlining.
    */
    \
     
     \ /
      Last update: 2021-06-23 14:24    [W:4.088 / U:0.824 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site