diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2014-01-01 16:58:59 +0100 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2014-04-22 13:24:46 +0200 |
commit | 645c5bc1d5b1253bf3df849edc339ec09b43371a (patch) | |
tree | 41a9d07a5a25463cfb0be0f031604fd9ac26da1f /arch/s390/kvm | |
parent | f987a3eef03092c895be5de7ac38ebf3558d5113 (diff) | |
download | blackbird-obmc-linux-645c5bc1d5b1253bf3df849edc339ec09b43371a.tar.gz blackbird-obmc-linux-645c5bc1d5b1253bf3df849edc339ec09b43371a.zip |
KVM: s390: convert handle_stsi()
Convert handle_stsi() to new guest access functions.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'arch/s390/kvm')
-rw-r--r-- | arch/s390/kvm/priv.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/s390/kvm/priv.c b/arch/s390/kvm/priv.c index 44ff22007052..5fb503a6c443 100644 --- a/arch/s390/kvm/priv.c +++ b/arch/s390/kvm/priv.c @@ -530,9 +530,10 @@ static int handle_stsi(struct kvm_vcpu *vcpu) break; } - if (copy_to_guest_absolute(vcpu, operand2, (void *) mem, PAGE_SIZE)) { - rc = kvm_s390_inject_program_int(vcpu, PGM_ADDRESSING); - goto out_exception; + rc = write_guest(vcpu, operand2, (void *)mem, PAGE_SIZE); + if (rc) { + rc = kvm_s390_inject_prog_cond(vcpu, rc); + goto out; } trace_kvm_s390_handle_stsi(vcpu, fc, sel1, sel2, operand2); free_page(mem); @@ -541,7 +542,7 @@ static int handle_stsi(struct kvm_vcpu *vcpu) return 0; out_no_data: kvm_s390_set_psw_cc(vcpu, 3); -out_exception: +out: free_page(mem); return rc; } |