Message ID | 1503318465-19013-2-git-send-email-borntraeger@de.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 21.08.2017 14:27, Christian Borntraeger wrote: > From: Heiko Carstens <heiko.carstens@de.ibm.com> > > 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> > Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> > --- > arch/s390/kvm/sthyi.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/s390/kvm/sthyi.c b/arch/s390/kvm/sthyi.c > index 926b524..2773a2f 100644 > --- a/arch/s390/kvm/sthyi.c > +++ b/arch/s390/kvm/sthyi.c > @@ -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; > } > > Reviewed-by: David Hildenbrand <david@redhat.com>
On Mon, 21 Aug 2017 14:27:44 +0200 Christian Borntraeger <borntraeger@de.ibm.com> wrote: > From: Heiko Carstens <heiko.carstens@de.ibm.com> > > 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> > Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> > --- > arch/s390/kvm/sthyi.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/s390/kvm/sthyi.c b/arch/s390/kvm/sthyi.c > index 926b524..2773a2f 100644 > --- a/arch/s390/kvm/sthyi.c > +++ b/arch/s390/kvm/sthyi.c > @@ -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; > } > Reviewed-by: Cornelia Huck <cohuck@redhat.com>
diff --git a/arch/s390/kvm/sthyi.c b/arch/s390/kvm/sthyi.c index 926b524..2773a2f 100644 --- a/arch/s390/kvm/sthyi.c +++ b/arch/s390/kvm/sthyi.c @@ -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; }