1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
From d38d59ffb5d56c838b1ed7cc346b8d63398b5452 Mon Sep 17 00:00:00 2001
From: Michael Munday <munday@ca.ibm.com>
Date: Thu, 8 Sep 2016 19:27:24 -0400
Subject: [PATCH] runtime: fix SIGILL in checkvectorfacility on s390x
Origin: https://golang.org/cl/28850
Bug: https://golang.org/issue/17032
Applied-Upstream: 1.7.2
STFLE does not necessarily write to all the double-words that are
requested. It is therefore necessary to clear the target memory
before calling STFLE in order to ensure that the facility list does
not contain false positives.
Fixes #17032.
Change-Id: I7bec9ade7103e747b72f08562fe57e6f091bd89f
Reviewed-on: https://go-review.googlesource.com/28850
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
---
src/runtime/asm_s390x.s | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/runtime/asm_s390x.s b/src/runtime/asm_s390x.s
index cf0ed1a..928fe37 100644
--- a/src/runtime/asm_s390x.s
+++ b/src/runtime/asm_s390x.s
@@ -20,6 +20,7 @@ TEXT runtime·checkvectorfacility(SB),NOSPLIT,$32-0
MOVD $2, R0
MOVD R1, tmp-32(SP)
MOVD $x-24(SP), R1
+ XC $24, 0(R1), 0(R1)
// STFLE 0(R1)
WORD $0xB2B01000
MOVBZ z-8(SP), R1
|