]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
KVM: s390: sthyi: fix sthyi inline assembly
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Thu, 3 Aug 2017 11:05:11 +0000 (13:05 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Mon, 21 Aug 2017 13:34:36 +0000 (15:34 +0200)
The sthyi inline assembly misses register r3 within the clobber
list. The sthyi instruction will always write a return code to
register "R2+1", which in this case would be r3. Due to that we may
have register corruption and see host crashes or data corruption
depending on how gcc decided to allocate and use registers during
compile time.

Fixes: 95ca2cb57985 ("KVM: s390: Add sthyi emulation")
Cc: <stable@vger.kernel.org> # 4.8+
Reviewed-by: Janosch Frank <frankja@linux.vnet.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/kvm/sthyi.c

index 926b5244263efd3dd1fadf637ce4790251367e60..2773a2f6a5c45cbe8491e9d2bd99496a0b7b9609 100644 (file)
@@ -394,7 +394,7 @@ static int sthyi(u64 vaddr)
                "srl     %[cc],28\n"
                : [cc] "=d" (cc)
                : [code] "d" (code), [addr] "a" (addr)
-               : "memory", "cc");
+               : "3", "memory", "cc");
        return cc;
 }