Commit 02b93c0b authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Borislav Petkov

x86/fpu: Get rid of using_compacted_format()

This function is pointlessly global and a complete misnomer because it's
usage is related to both supervisor state checks and compacted format
checks. Remove it and just make the conditions check the XSAVES feature.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
Reviewed-by: default avatarBorislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20210623121453.425493349@linutronix.de
parent dbb60ac7
...@@ -101,7 +101,6 @@ extern void __init update_regset_xstate_info(unsigned int size, ...@@ -101,7 +101,6 @@ extern void __init update_regset_xstate_info(unsigned int size,
u64 xstate_mask); u64 xstate_mask);
void *get_xsave_addr(struct xregs_state *xsave, int xfeature_nr); void *get_xsave_addr(struct xregs_state *xsave, int xfeature_nr);
int using_compacted_format(void);
int xfeature_size(int xfeature_nr); int xfeature_size(int xfeature_nr);
int copy_kernel_to_xstate(struct xregs_state *xsave, const void *kbuf); int copy_kernel_to_xstate(struct xregs_state *xsave, const void *kbuf);
int copy_user_to_xstate(struct xregs_state *xsave, const void __user *ubuf); int copy_user_to_xstate(struct xregs_state *xsave, const void __user *ubuf);
......
...@@ -449,20 +449,6 @@ int xfeature_size(int xfeature_nr) ...@@ -449,20 +449,6 @@ int xfeature_size(int xfeature_nr)
return eax; return eax;
} }
/*
* 'XSAVES' implies two different things:
* 1. saving of supervisor/system state
* 2. using the compacted format
*
* Use this function when dealing with the compacted format so
* that it is obvious which aspect of 'XSAVES' is being handled
* by the calling code.
*/
int using_compacted_format(void)
{
return boot_cpu_has(X86_FEATURE_XSAVES);
}
/* Validate an xstate header supplied by userspace (ptrace or sigreturn) */ /* Validate an xstate header supplied by userspace (ptrace or sigreturn) */
static int validate_user_xstate_header(const struct xstate_header *hdr) static int validate_user_xstate_header(const struct xstate_header *hdr)
{ {
...@@ -581,9 +567,9 @@ static void do_extra_xstate_size_checks(void) ...@@ -581,9 +567,9 @@ static void do_extra_xstate_size_checks(void)
check_xstate_against_struct(i); check_xstate_against_struct(i);
/* /*
* Supervisor state components can be managed only by * Supervisor state components can be managed only by
* XSAVES, which is compacted-format only. * XSAVES.
*/ */
if (!using_compacted_format()) if (!cpu_feature_enabled(X86_FEATURE_XSAVES))
XSTATE_WARN_ON(xfeature_is_supervisor(i)); XSTATE_WARN_ON(xfeature_is_supervisor(i));
/* Align from the end of the previous feature */ /* Align from the end of the previous feature */
...@@ -593,9 +579,9 @@ static void do_extra_xstate_size_checks(void) ...@@ -593,9 +579,9 @@ static void do_extra_xstate_size_checks(void)
* The offset of a given state in the non-compacted * The offset of a given state in the non-compacted
* format is given to us in a CPUID leaf. We check * format is given to us in a CPUID leaf. We check
* them for being ordered (increasing offsets) in * them for being ordered (increasing offsets) in
* setup_xstate_features(). * setup_xstate_features(). XSAVES uses compacted format.
*/ */
if (!using_compacted_format()) if (!cpu_feature_enabled(X86_FEATURE_XSAVES))
paranoid_xstate_size = xfeature_uncompacted_offset(i); paranoid_xstate_size = xfeature_uncompacted_offset(i);
/* /*
* The compacted-format offset always depends on where * The compacted-format offset always depends on where
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment