Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[sfrench/cifs-2.6.git] / arch / s390 / kvm / kvm-s390.c
index 39cff07bf2ebef248e2f9630517e4be31ab3530c..f6db0f1bc86749ab5d513a153e3abbe341408db7 100644 (file)
@@ -4000,6 +4000,10 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
        if (kvm_run->immediate_exit)
                return -EINTR;
 
+       if (kvm_run->kvm_valid_regs & ~KVM_SYNC_S390_VALID_FIELDS ||
+           kvm_run->kvm_dirty_regs & ~KVM_SYNC_S390_VALID_FIELDS)
+               return -EINVAL;
+
        vcpu_load(vcpu);
 
        if (guestdbg_exit_pending(vcpu)) {
@@ -4257,7 +4261,7 @@ static long kvm_s390_guest_mem_op(struct kvm_vcpu *vcpu,
        const u64 supported_flags = KVM_S390_MEMOP_F_INJECT_EXCEPTION
                                    | KVM_S390_MEMOP_F_CHECK_ONLY;
 
-       if (mop->flags & ~supported_flags)
+       if (mop->flags & ~supported_flags || mop->ar >= NUM_ACRS || !mop->size)
                return -EINVAL;
 
        if (mop->size > MEM_OP_MAX_SIZE)