]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
x86/cpu: Remove LASS restriction on vsyscall emulation
authorSohil Mehta <sohil.mehta@intel.com>
Mon, 9 Mar 2026 18:10:29 +0000 (11:10 -0700)
committerDave Hansen <dave.hansen@linux.intel.com>
Thu, 19 Mar 2026 22:11:13 +0000 (15:11 -0700)
Vsyscall emulation has two modes of operation: XONLY and EMULATE. The
default XONLY mode is now supported with a LASS-triggered #GP. OTOH,
LASS is disabled if someone requests the deprecated EMULATE mode via the
vsyscall=emulate command line option. So, remove the restriction on LASS
when the overall vsyscall emulation support is compiled in.

As a result, there is no need for setup_lass() anymore. LASS is enabled
by default through a late_initcall().

Signed-off-by: Sohil Mehta <sohil.mehta@intel.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: Dave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Reviewed-by:
Tested-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Link: https://patch.msgid.link/20260309181029.398498-6-sohil.mehta@intel.com
arch/x86/kernel/cpu/common.c

index 3557f0e6b3aa5cda738fafc368352bec2d2b0648..02472fc763d9b45b987c8f40699f632ee4a5d1f1 100644 (file)
@@ -406,20 +406,6 @@ out:
        cr4_clear_bits(X86_CR4_UMIP);
 }
 
-static __always_inline void setup_lass(struct cpuinfo_x86 *c)
-{
-       if (!cpu_feature_enabled(X86_FEATURE_LASS))
-               return;
-
-       /*
-        * Legacy vsyscall page access causes a #GP when LASS is active.
-        * Disable LASS because the #GP handler doesn't support vsyscall
-        * emulation.
-        */
-       if (IS_ENABLED(CONFIG_X86_VSYSCALL_EMULATION))
-               setup_clear_cpu_cap(X86_FEATURE_LASS);
-}
-
 static int enable_lass(unsigned int cpu)
 {
        cr4_set_bits(X86_CR4_LASS);
@@ -2061,7 +2047,6 @@ static void identify_cpu(struct cpuinfo_x86 *c)
        setup_smep(c);
        setup_smap(c);
        setup_umip(c);
-       setup_lass(c);
 
        /* Enable FSGSBASE instructions if available. */
        if (cpu_has(c, X86_FEATURE_FSGSBASE)) {