• Sebastian Andrzej Siewior's avatar
    x86/fpu: Remove fpu->initialized usage in copy_fpstate_to_sigframe() · fbcc9e0c
    Sebastian Andrzej Siewior authored
    With lazy-FPU support the (now named variable) ->initialized was set to
    true if the CPU's FPU registers were holding a valid state of the
    FPU registers for the active process. If it was set to false then the
    FPU state was saved in fpu->state and the FPU was deactivated.
    
    With lazy-FPU gone, ->initialized is always true for user threads and
    kernel threads never call this function so ->initialized is always true
    in copy_fpstate_to_sigframe().
    
    The using_compacted_format() check is also a leftover from the lazy-FPU
    time. In the
    
      ->initialized == false
    
    case copy_to_user() would copy the compacted buffer while userland would
    expect the non-compacted format instead. So in order to save the FPU
    state in the non-compacted form it issues XSAVE to save the *current*
    FPU state.
    
    If the FPU is not enabled, the attempt raises the FPU trap, the trap
    restores the FPU contents and re-enables the FPU and XSAVE is invoked
    again and succeeds.
    
    *This* does not longer work since commit
    
      bef8b6da ("x86/fpu: Handle #NM without FPU emulation as an error")
    
    Remove the check for ->initialized because it is always true and remove
    the false condition. Update the comment to reflect that the state is
    always live.
    
     [ bp: Massage. ]
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Reviewed-by: default avatarDave Hansen <dave.hansen@intel.com>
    Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: "Jason A. Donenfeld" <Jason@zx2c4.com>
    Cc: kvm ML <kvm@vger.kernel.org>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20190403164156.19645-6-bigeasy@linutronix.de
    fbcc9e0c
signal.c 10.8 KB