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]
Message-ID: <2d640c9e-56cf-5425-1c94-682bebd18fcd@intel.com>
Date:   Fri, 27 Oct 2017 11:21:34 -0700
From:   Dave Hansen <dave.hansen@...el.com>
To:     Andy Lutomirski <luto@...nel.org>, X86 ML <x86@...nel.org>
Cc:     Borislav Petkov <bpetkov@...e.de>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        Brian Gerst <brgerst@...il.com>,
        Linus Torvalds <torvalds@...ux-foundation.org>
Subject: Re: [PATCH 14/18] x86/boot/64: Stop initializing TSS.sp0 at boot

On 10/26/2017 01:26 AM, Andy Lutomirski wrote:
> --- a/arch/x86/kernel/process.c
> +++ b/arch/x86/kernel/process.c
> @@ -48,7 +48,8 @@
>   */
>  __visible DEFINE_PER_CPU_SHARED_ALIGNED(struct tss_struct, cpu_tss) = {
>  	.x86_tss = {
> -		.sp0 = TOP_OF_INIT_STACK,
> +		/* Initialize sp0 to a value that is definitely invalid. */
> +		.sp0 = (1UL << (BITS_PER_LONG-1)) + 1,

This confused me at first: How does this not poison the init task's stack?

Should the comment maybe say something like:

	The hardware only uses .sp0 (or sp1 or sp2 for that matter) when
	doing ring transitions.  Since the init task never runs anything
	other than ring 0, it has no need for a valid value here.
	Poison it.

to clarify what's going on?

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ