All of lore.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL 0/2] KVM: s390: two fixes for sthyi emulation
@ 2017-08-21 15:34 Christian Borntraeger
  2017-08-21 15:34 ` [GIT PULL 1/2] KVM: s390: sthyi: fix sthyi inline assembly Christian Borntraeger
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Christian Borntraeger @ 2017-08-21 15:34 UTC (permalink / raw)
  To: Paolo Bonzini, Radim Krčmář
  Cc: KVM, Christian Borntraeger, Cornelia Huck, linux-s390

Paolo, Radim,

The following changes since commit 4f899147424a189b0ad1fdd6f35784ed5a642e83:

  KVM: s390: take srcu lock when getting/setting storage keys (2017-07-25 14:59:52 +0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git  tags/kvm-s390-master-4.13-2

for you to fetch changes up to 857b8de96795646c5891cf44ae6fb19b9ff74bf9:

  KVM: s390: sthyi: fix specification exception detection (2017-08-21 15:34:54 +0200)

----------------------------------------------------------------
KVM: s390: two fixes for sthyi emulation

- missing inline assembly constraint
- wrong exception handling

----------------------------------------------------------------
Heiko Carstens (2):
      KVM: s390: sthyi: fix sthyi inline assembly
      KVM: s390: sthyi: fix specification exception detection

 arch/s390/kvm/sthyi.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [GIT PULL 1/2] KVM: s390: sthyi: fix sthyi inline assembly
  2017-08-21 15:34 [GIT PULL 0/2] KVM: s390: two fixes for sthyi emulation Christian Borntraeger
@ 2017-08-21 15:34 ` Christian Borntraeger
  2017-08-21 15:34 ` [GIT PULL 2/2] KVM: s390: sthyi: fix specification exception detection Christian Borntraeger
  2017-08-21 16:49 ` [GIT PULL 0/2] KVM: s390: two fixes for sthyi emulation Radim Krčmář
  2 siblings, 0 replies; 4+ messages in thread
From: Christian Borntraeger @ 2017-08-21 15:34 UTC (permalink / raw)
  To: Paolo Bonzini, Radim Krčmář
  Cc: KVM, Christian Borntraeger, Cornelia Huck, linux-s390, Heiko Carstens

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>
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 | 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;
 }
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [GIT PULL 2/2] KVM: s390: sthyi: fix specification exception detection
  2017-08-21 15:34 [GIT PULL 0/2] KVM: s390: two fixes for sthyi emulation Christian Borntraeger
  2017-08-21 15:34 ` [GIT PULL 1/2] KVM: s390: sthyi: fix sthyi inline assembly Christian Borntraeger
@ 2017-08-21 15:34 ` Christian Borntraeger
  2017-08-21 16:49 ` [GIT PULL 0/2] KVM: s390: two fixes for sthyi emulation Radim Krčmář
  2 siblings, 0 replies; 4+ messages in thread
From: Christian Borntraeger @ 2017-08-21 15:34 UTC (permalink / raw)
  To: Paolo Bonzini, Radim Krčmář
  Cc: KVM, Christian Borntraeger, Cornelia Huck, linux-s390, Heiko Carstens

From: Heiko Carstens <heiko.carstens@de.ibm.com>

sthyi should only generate a specification exception if the function
code is zero and the response buffer is not on a 4k boundary.

The current code would also test for unknown function codes if the
response buffer, that is currently only defined for function code 0,
is not on a 4k boundary and incorrectly inject a specification
exception instead of returning with condition code 3 and return code 4
(unsupported function code).

Fix this by moving the boundary check.

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 | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/s390/kvm/sthyi.c b/arch/s390/kvm/sthyi.c
index 2773a2f..a2e5c24 100644
--- a/arch/s390/kvm/sthyi.c
+++ b/arch/s390/kvm/sthyi.c
@@ -425,7 +425,7 @@ int handle_sthyi(struct kvm_vcpu *vcpu)
 	VCPU_EVENT(vcpu, 3, "STHYI: fc: %llu addr: 0x%016llx", code, addr);
 	trace_kvm_s390_handle_sthyi(vcpu, code, addr);
 
-	if (reg1 == reg2 || reg1 & 1 || reg2 & 1 || addr & ~PAGE_MASK)
+	if (reg1 == reg2 || reg1 & 1 || reg2 & 1)
 		return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
 
 	if (code & 0xffff) {
@@ -433,6 +433,9 @@ int handle_sthyi(struct kvm_vcpu *vcpu)
 		goto out;
 	}
 
+	if (addr & ~PAGE_MASK)
+		return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
+
 	/*
 	 * If the page has not yet been faulted in, we want to do that
 	 * now and not after all the expensive calculations.
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [GIT PULL 0/2] KVM: s390: two fixes for sthyi emulation
  2017-08-21 15:34 [GIT PULL 0/2] KVM: s390: two fixes for sthyi emulation Christian Borntraeger
  2017-08-21 15:34 ` [GIT PULL 1/2] KVM: s390: sthyi: fix sthyi inline assembly Christian Borntraeger
  2017-08-21 15:34 ` [GIT PULL 2/2] KVM: s390: sthyi: fix specification exception detection Christian Borntraeger
@ 2017-08-21 16:49 ` Radim Krčmář
  2 siblings, 0 replies; 4+ messages in thread
From: Radim Krčmář @ 2017-08-21 16:49 UTC (permalink / raw)
  To: Christian Borntraeger; +Cc: Paolo Bonzini, KVM, Cornelia Huck, linux-s390

2017-08-21 17:34+0200, Christian Borntraeger:
> Paolo, Radim,
> 
> The following changes since commit 4f899147424a189b0ad1fdd6f35784ed5a642e83:
> 
>   KVM: s390: take srcu lock when getting/setting storage keys (2017-07-25 14:59:52 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git  tags/kvm-s390-master-4.13-2
> 
> for you to fetch changes up to 857b8de96795646c5891cf44ae6fb19b9ff74bf9:
> 
>   KVM: s390: sthyi: fix specification exception detection (2017-08-21 15:34:54 +0200)
> 
> ----------------------------------------------------------------
> KVM: s390: two fixes for sthyi emulation
> 
> - missing inline assembly constraint
> - wrong exception handling
> 
> ----------------------------------------------------------------
> Heiko Carstens (2):
>       KVM: s390: sthyi: fix sthyi inline assembly
>       KVM: s390: sthyi: fix specification exception detection

Pulled, thanks.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-08-21 16:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-21 15:34 [GIT PULL 0/2] KVM: s390: two fixes for sthyi emulation Christian Borntraeger
2017-08-21 15:34 ` [GIT PULL 1/2] KVM: s390: sthyi: fix sthyi inline assembly Christian Borntraeger
2017-08-21 15:34 ` [GIT PULL 2/2] KVM: s390: sthyi: fix specification exception detection Christian Borntraeger
2017-08-21 16:49 ` [GIT PULL 0/2] KVM: s390: two fixes for sthyi emulation Radim Krčmář

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.