summaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
authorHeiko Carstens2014-01-01 16:50:11 +0100
committerChristian Borntraeger2014-04-22 13:24:42 +0200
commit0e7a3f9405d327bdc55ef1cdca7b63486b1916a0 (patch)
tree4d07ed81824353fefc409d53bb0990e1b23a3064 /arch/s390
parentKVM: s390: convert __sigp_set_prefix()/handle_set_prefix() (diff)
downloadkernel-qcow2-linux-0e7a3f9405d327bdc55ef1cdca7b63486b1916a0.tar.gz
kernel-qcow2-linux-0e7a3f9405d327bdc55ef1cdca7b63486b1916a0.tar.xz
kernel-qcow2-linux-0e7a3f9405d327bdc55ef1cdca7b63486b1916a0.zip
KVM: s390: convert handle_set_clock()
Convert handle_set_clock() 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')
-rw-r--r--arch/s390/kvm/priv.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/s390/kvm/priv.c b/arch/s390/kvm/priv.c
index dd6ad8445608..9648504d7818 100644
--- a/arch/s390/kvm/priv.c
+++ b/arch/s390/kvm/priv.c
@@ -35,8 +35,8 @@ static int handle_set_clock(struct kvm_vcpu *vcpu)
{
struct kvm_vcpu *cpup;
s64 hostclk, val;
+ int i, rc;
u64 op2;
- int i;
if (vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE)
return kvm_s390_inject_program_int(vcpu, PGM_PRIVILEGED_OP);
@@ -44,8 +44,9 @@ static int handle_set_clock(struct kvm_vcpu *vcpu)
op2 = kvm_s390_get_base_disp_s(vcpu);
if (op2 & 7) /* Operand must be on a doubleword boundary */
return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
- if (get_guest(vcpu, val, (u64 __user *) op2))
- return kvm_s390_inject_program_int(vcpu, PGM_ADDRESSING);
+ rc = read_guest(vcpu, op2, &val, sizeof(val));
+ if (rc)
+ return kvm_s390_inject_prog_cond(vcpu, rc);
if (store_tod_clock(&hostclk)) {
kvm_s390_set_psw_cc(vcpu, 3);