Merge tag 'kvmarm-6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm...
[platform/kernel/linux-rpi.git] / arch / arm64 / kvm / guest.c
index faae7ec..20280a5 100644 (file)
@@ -1026,8 +1026,8 @@ int kvm_arm_vcpu_arch_has_attr(struct kvm_vcpu *vcpu,
        return ret;
 }
 
-long kvm_vm_ioctl_mte_copy_tags(struct kvm *kvm,
-                               struct kvm_arm_copy_mte_tags *copy_tags)
+int kvm_vm_ioctl_mte_copy_tags(struct kvm *kvm,
+                              struct kvm_arm_copy_mte_tags *copy_tags)
 {
        gpa_t guest_ipa = copy_tags->guest_ipa;
        size_t length = copy_tags->length;
@@ -1048,6 +1048,10 @@ long kvm_vm_ioctl_mte_copy_tags(struct kvm *kvm,
        if (length & ~PAGE_MASK || guest_ipa & ~PAGE_MASK)
                return -EINVAL;
 
+       /* Lengths above INT_MAX cannot be represented in the return value */
+       if (length > INT_MAX)
+               return -EINVAL;
+
        gfn = gpa_to_gfn(guest_ipa);
 
        mutex_lock(&kvm->slots_lock);