ACK: [B][SRU][PATCH 1/1] selftests/powerpc: Fix ptrace tm failure

Stefan Bader stefan.bader at canonical.com
Wed Jan 30 14:10:22 UTC 2019


On 24.01.19 09:30, Po-Hsu Lin wrote:
> From: Breno Leitao <leitao at debian.org>
> 
> BugLink: https://bugs.launchpad.net/bugs/1813127
> 
> Test ptrace-tm-spd-gpr fails on current kernel (4.19) due to a segmentation
> fault that happens on the child process prior to setting cptr[2] = 1. This
> causes the parent process to wait forever at 'while (!pptr[2])' and the test to
> be killed by the test harness framework by timeout, thus, failing.
> 
> The segmentation fault happens because of a inline assembly being
> generated as:
> 
> 	0x10000355c <tm_spd_gpr+492>    lfs    f0, 0(0)
> 
> This is reading memory position 0x0 and causing the segmentation fault.
> 
> This code is being generated by ASM_LOAD_FPR_SINGLE_PRECISION(flt_4), where
> flt_4 is passed to the inline assembly block as:
> 
> 	[flt_4] "r" (&d)
> 
> Since the inline assembly 'r' constraint means any GPR, gpr0 is being
> chosen, thus causing this issue when issuing a Load Floating-Point Single
> instruction.
> 
> This patch simply changes the constraint to 'b', which specify that this
> register will be used as base, and r0 is not allowed to be used, avoiding
> this issue.
> 
> Other than that, removing flt_2 register from the input operands, since it
> is not used by the inline assembly code at all.
> 
> Cc: stable at vger.kernel.org
> Signed-off-by: Breno Leitao <leitao at debian.org>
> Acked-by: Segher Boessenkool <segher at kernel.crashing.org>
> Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>
> (cherry picked from commit 48dc0ef19044bfb69193302fbe3a834e3331b7ae)
> Signed-off-by: Po-Hsu Lin <po-hsu.lin at canonical.com>
Acked-by: Stefan Bader <stefan.bader at canonical.com>
> ---
>  tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c b/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c
> index 327fa94..dbdffa2 100644
> --- a/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c
> +++ b/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr.c
> @@ -67,8 +67,8 @@ void tm_spd_gpr(void)
>  		"3: ;"
>  		: [res] "=r" (result), [texasr] "=r" (texasr)
>  		: [gpr_1]"i"(GPR_1), [gpr_2]"i"(GPR_2), [gpr_4]"i"(GPR_4),
> -		[sprn_texasr] "i" (SPRN_TEXASR), [flt_1] "r" (&a),
> -		[flt_2] "r" (&b), [flt_4] "r" (&d)
> +		[sprn_texasr] "i" (SPRN_TEXASR), [flt_1] "b" (&a),
> +		[flt_4] "b" (&d)
>  		: "memory", "r5", "r6", "r7",
>  		"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
>  		"r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20190130/c66ea379/attachment-0001.sig>


More information about the kernel-team mailing list