[PATCH v2 0/3] Fix small issues in XSAVES

From: Yu-cheng Yu
Date: Thu Dec 12 2019 - 16:21:55 EST


Rebase v1 to Linux v5.5-rc1. This supersedes the previous version, but
does not have any functional changes.

The first two patches in this series are split from my supervisor xstate
patches [2]. The third is to fix a vital issue in __fpu_restore_sig(),
and more RFC than the others. All three are not directly related to
supervisor xstates or CET, split them out and submit first. I will
re-submit supervisor xstate patches shortly.

When__fpu_restore_sig() fails, partially cleared FPU registers still belong
to the previous owner task. That causes that task to use corrupted xregs.
Fix it by doing __cpu_invalidate_fpregs_state() in functions that copy into
fpregs. Further details are in the commit log of patch #3.

[1] v1 of this series:
https://lkml.kernel.org/r/20191205182648.32257-1-yu-cheng.yu@xxxxxxxxx/

[2] Support XSAVES supervisor states
https://lkml.kernel.org/r/20190925151022.21688-1-yu-cheng.yu@xxxxxxxxx/

[3] CET patches:
https://lkml.kernel.org/r/20190813205225.12032-1-yu-cheng.yu@xxxxxxxxx/
https://lkml.kernel.org/r/20190813205359.12196-1-yu-cheng.yu@xxxxxxxxx/

Yu-cheng Yu (3):
x86/fpu/xstate: Fix small issues before adding supervisor xstates
x86/fpu/xstate: Make xfeature_is_supervisor()/xfeature_is_user()
return bool
x86/fpu/xstate: Invalidate fpregs when __fpu_restore_sig() fails

arch/x86/include/asm/fpu/internal.h | 14 ++++++++++++++
arch/x86/kernel/fpu/core.c | 16 ++++++++++++++--
arch/x86/kernel/fpu/xstate.c | 18 ++++++++----------
3 files changed, 36 insertions(+), 12 deletions(-)

--
2.17.1