lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 07 Oct 2022 10:45:14 -0700
From:   "H. Peter Anvin" <hpa@...or.com>
To:     Peter Zijlstra <peterz@...radead.org>, Xin Li <xin3.li@...el.com>
CC:     linux-kernel@...r.kernel.org, x86@...nel.org, tglx@...utronix.de,
        mingo@...hat.com, bp@...en8.de, dave.hansen@...ux.intel.com
Subject: Re: [PATCH 6/6] x86/gsseg: use the LKGS instruction if available for load_gs_index()

On October 7, 2022 7:47:09 AM PDT, Peter Zijlstra <peterz@...radead.org> wrote:
>On Thu, Oct 06, 2022 at 08:40:41AM -0700, Xin Li wrote:
>
>>  static inline void native_load_gs_index(unsigned int selector)
>>  {
>> +	u16 sel = selector;
>> +
>> +	/*
>> +	 * Note: the fixup is used for the LKGS instruction, but
>> +	 * it needs to be attached to the primary instruction sequence
>> +	 * as it isn't something that gets patched.
>> +	 *
>> +	 * %rax is provided to the assembly routine as a scratch
>> +	 * register.
>> +	 */
>> +	alternative_io("1: call asm_load_gs_index\n"
>> +		       ".pushsection \".fixup\",\"ax\"\n"
>> +		       "2:	xorl %k[sel], %k[sel]\n"
>> +		       "	jmp 1b\n"
>> +		       ".popsection\n"
>> +		       _ASM_EXTABLE(1b, 2b),
>> +		       _ASM_BYTES(0x3e) LKGS_DI,
>> +		       X86_FEATURE_LKGS,
>> +		       ASM_OUTPUT2([sel] "+D" (sel), ASM_CALL_CONSTRAINT),
>> +		       ASM_NO_INPUT_CLOBBER(_ASM_AX));
>>  }
>
>I'm very sure none of this was tested... the .fixup section hasn't
>existed for almost a year now.
>
>  e5eefda5aa51 ("x86: Remove .fixup section")

Xin, what did you use as the forward-porting baseline?

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ