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:   Mon, 1 Apr 2019 13:14:13 +0200
From:   Christophe Leroy <christophe.leroy@....fr>
To:     Benjamin Herrenschmidt <benh@...nel.crashing.org>,
        Paul Mackerras <paulus@...ba.org>,
        Michael Ellerman <mpe@...erman.id.au>,
        Larry Finger <Larry.Finger@...inger.net>
Cc:     linuxppc-dev@...ts.ozlabs.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] powerpc/rtas: fix early boot failure.

Michael,

Looks like you missed this fix for rc3.

Christophe

Le 25/03/2019 à 09:43, Christophe Leroy a écrit :
> Commit 0df977eafc79 ("powerpc/6xx: Don't use SPRN_SPRG2 for storing
> stack pointer while in RTAS") changes the code to use a field in
> thread struct to store the stack pointer while in RTAS instead of
> using SPRN_SPRG2. It therefore converts all places which were
> manipulating SPRN_SPRG2 to use that field. During early startup,
> the zeroing of SPRN_SPRG2 has been replaced by a zeroing of that
> field in thread struct. But at least in start_here, that's done
> wrongly because it used the physical address of the fields while
> MMU is on at that time.
> 
> So the virtual address of the field should be used instead, but in
> the meantime, thread struct has already been zeroised and initialised
> so we can just drop this initialisation.
> 
> Reported-by: Larry Finger <Larry.Finger@...inger.net>
> Fixes: 0df977eafc79 ("powerpc/6xx: Don't use SPRN_SPRG2 for storing stack pointer while in RTAS")
> Signed-off-by: Christophe Leroy <christophe.leroy@....fr>
> ---
>   arch/powerpc/kernel/head_32.S | 8 --------
>   1 file changed, 8 deletions(-)
> 
> diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S
> index 48051c8977c5..e25b615e9f9e 100644
> --- a/arch/powerpc/kernel/head_32.S
> +++ b/arch/powerpc/kernel/head_32.S
> @@ -851,10 +851,6 @@ __secondary_start:
>   	tophys(r4,r2)
>   	addi	r4,r4,THREAD	/* phys address of our thread_struct */
>   	mtspr	SPRN_SPRG_THREAD,r4
> -#ifdef CONFIG_PPC_RTAS
> -	li	r3,0
> -	stw	r3, RTAS_SP(r4)		/* 0 => not in RTAS */
> -#endif
>   	lis	r4, (swapper_pg_dir - PAGE_OFFSET)@h
>   	ori	r4, r4, (swapper_pg_dir - PAGE_OFFSET)@l
>   	mtspr	SPRN_SPRG_PGDIR, r4
> @@ -941,10 +937,6 @@ start_here:
>   	tophys(r4,r2)
>   	addi	r4,r4,THREAD	/* init task's THREAD */
>   	mtspr	SPRN_SPRG_THREAD,r4
> -#ifdef CONFIG_PPC_RTAS
> -	li	r3,0
> -	stw	r3, RTAS_SP(r4)		/* 0 => not in RTAS */
> -#endif
>   	lis	r4, (swapper_pg_dir - PAGE_OFFSET)@h
>   	ori	r4, r4, (swapper_pg_dir - PAGE_OFFSET)@l
>   	mtspr	SPRN_SPRG_PGDIR, r4
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ