x86/fpu: Get rid of using_compacted_format()
authorThomas Gleixner <tglx@linutronix.de>
Wed, 23 Jun 2021 12:01:48 +0000 (14:01 +0200)
committerBorislav Petkov <bp@suse.de>
Wed, 23 Jun 2021 15:49:47 +0000 (17:49 +0200)
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: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20210623121453.425493349@linutronix.de
arch/x86/include/asm/fpu/xstate.h
arch/x86/kernel/fpu/xstate.c

index 732ae79..6e5ba42 100644 (file)
@@ -101,7 +101,6 @@ extern void __init update_regset_xstate_info(unsigned int size,
                                             u64 xstate_mask);
 
 void *get_xsave_addr(struct xregs_state *xsave, int xfeature_nr);
-int using_compacted_format(void);
 int xfeature_size(int xfeature_nr);
 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);
index e17fde9..185cc5d 100644 (file)
@@ -449,20 +449,6 @@ int xfeature_size(int xfeature_nr)
        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) */
 static int validate_user_xstate_header(const struct xstate_header *hdr)
 {
@@ -581,9 +567,9 @@ static void do_extra_xstate_size_checks(void)
                check_xstate_against_struct(i);
                /*
                 * 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));
 
                /* Align from the end of the previous feature */
@@ -593,9 +579,9 @@ static void do_extra_xstate_size_checks(void)
                 * The offset of a given state in the non-compacted
                 * format is given to us in a CPUID leaf.  We check
                 * 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);
                /*
                 * The compacted-format offset always depends on where