diff options
Diffstat (limited to 'arch/s390/kvm/kvm-s390.c')
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index fd169f658bf8..0cb0da7822d5 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -638,16 +638,16 @@ long kvm_arch_vcpu_ioctl(struct file *filp, | |||
638 | void __user *argp = (void __user *)arg; | 638 | void __user *argp = (void __user *)arg; |
639 | long r; | 639 | long r; |
640 | 640 | ||
641 | if (ioctl == KVM_S390_INTERRUPT) { | 641 | switch (ioctl) { |
642 | case KVM_S390_INTERRUPT: { | ||
642 | struct kvm_s390_interrupt s390int; | 643 | struct kvm_s390_interrupt s390int; |
643 | 644 | ||
645 | r = -EFAULT; | ||
644 | if (copy_from_user(&s390int, argp, sizeof(s390int))) | 646 | if (copy_from_user(&s390int, argp, sizeof(s390int))) |
645 | return -EFAULT; | 647 | break; |
646 | return kvm_s390_inject_vcpu(vcpu, &s390int); | 648 | r = kvm_s390_inject_vcpu(vcpu, &s390int); |
649 | break; | ||
647 | } | 650 | } |
648 | |||
649 | vcpu_load(vcpu); | ||
650 | switch (ioctl) { | ||
651 | case KVM_S390_STORE_STATUS: | 651 | case KVM_S390_STORE_STATUS: |
652 | r = kvm_s390_vcpu_store_status(vcpu, arg); | 652 | r = kvm_s390_vcpu_store_status(vcpu, arg); |
653 | break; | 653 | break; |
@@ -666,7 +666,6 @@ long kvm_arch_vcpu_ioctl(struct file *filp, | |||
666 | default: | 666 | default: |
667 | r = -EINVAL; | 667 | r = -EINVAL; |
668 | } | 668 | } |
669 | vcpu_put(vcpu); | ||
670 | return r; | 669 | return r; |
671 | } | 670 | } |
672 | 671 | ||