diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2021-10-15 01:09:38 +0200 |
---|---|---|
committer | Borislav Petkov <bp@suse.de> | 2021-10-22 11:09:15 +0200 |
commit | eda32f4f93b452c5fe3c352523e7f7cc085c8205 (patch) | |
tree | 31af7db20335b0b0f50fbbb19e4b212abbb61245 /arch/x86/kernel/fpu/xstate.c | |
parent | x86/fpu: Mop up xfeatures_mask_uabi() (diff) | |
download | linux-eda32f4f93b452c5fe3c352523e7f7cc085c8205.tar.xz linux-eda32f4f93b452c5fe3c352523e7f7cc085c8205.zip |
x86/fpu: Rework restore_regs_from_fpstate()
xfeatures_mask_fpstate() is no longer valid when dynamically enabled
features come into play.
Rework restore_regs_from_fpstate() so it takes a constant mask which will
then be applied against the maximum feature set so that the restore
operation brings all features which are not in the xsave buffer xfeature
bitmap into init state.
This ensures that if the previous task used a dynamically enabled feature
that the task which restores has all unused components properly initialized.
Cleanup the last user of xfeatures_mask_fpstate() as well and remove it.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20211014230739.461348278@linutronix.de
Diffstat (limited to 'arch/x86/kernel/fpu/xstate.c')
-rw-r--r-- | arch/x86/kernel/fpu/xstate.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kernel/fpu/xstate.c b/arch/x86/kernel/fpu/xstate.c index 9f92abd230db..cbba3812a160 100644 --- a/arch/x86/kernel/fpu/xstate.c +++ b/arch/x86/kernel/fpu/xstate.c @@ -344,7 +344,7 @@ static void __init print_xstate_offset_size(void) */ static __init void os_xrstor_booting(struct xregs_state *xstate) { - u64 mask = xfeatures_mask_fpstate(); + u64 mask = fpu_kernel_cfg.max_features & XFEATURE_MASK_FPSTATE; u32 lmask = mask; u32 hmask = mask >> 32; int err; |