Skip to content

Commit fb872da

Browse files
committed
Merge tag 'kvm-x86-generic-6.8' of https://github.com/kvm-x86/linux into HEAD
Common KVM changes for 6.8: - Use memdup_array_user() to harden against overflow. - Unconditionally advertise KVM_CAP_DEVICE_CTRL for all architectures.
2 parents 5f53d88 + 1f82935 commit fb872da

7 files changed

Lines changed: 7 additions & 11 deletions

File tree

arch/arm64/kvm/arm.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,6 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
221221
r = vgic_present;
222222
break;
223223
case KVM_CAP_IOEVENTFD:
224-
case KVM_CAP_DEVICE_CTRL:
225224
case KVM_CAP_USER_MEMORY:
226225
case KVM_CAP_SYNC_MMU:
227226
case KVM_CAP_DESTROY_MEMORY_REGION_WORKS:

arch/powerpc/kvm/powerpc.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,6 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
528528
case KVM_CAP_ENABLE_CAP:
529529
case KVM_CAP_ONE_REG:
530530
case KVM_CAP_IOEVENTFD:
531-
case KVM_CAP_DEVICE_CTRL:
532531
case KVM_CAP_IMMEDIATE_EXIT:
533532
case KVM_CAP_SET_GUEST_DEBUG:
534533
r = 1;

arch/riscv/kvm/vm.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,6 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
179179
r = kvm_riscv_aia_available();
180180
break;
181181
case KVM_CAP_IOEVENTFD:
182-
case KVM_CAP_DEVICE_CTRL:
183182
case KVM_CAP_USER_MEMORY:
184183
case KVM_CAP_SYNC_MMU:
185184
case KVM_CAP_DESTROY_MEMORY_REGION_WORKS:

arch/s390/kvm/guestdbg.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,8 @@ int kvm_s390_import_bp_data(struct kvm_vcpu *vcpu,
213213
else if (dbg->arch.nr_hw_bp > MAX_BP_COUNT)
214214
return -EINVAL;
215215

216-
bp_data = memdup_user(dbg->arch.hw_bp,
217-
sizeof(*bp_data) * dbg->arch.nr_hw_bp);
216+
bp_data = memdup_array_user(dbg->arch.hw_bp, dbg->arch.nr_hw_bp,
217+
sizeof(*bp_data));
218218
if (IS_ERR(bp_data))
219219
return PTR_ERR(bp_data);
220220

arch/s390/kvm/kvm-s390.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,6 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
563563
case KVM_CAP_ENABLE_CAP:
564564
case KVM_CAP_S390_CSS_SUPPORT:
565565
case KVM_CAP_IOEVENTFD:
566-
case KVM_CAP_DEVICE_CTRL:
567566
case KVM_CAP_S390_IRQCHIP:
568567
case KVM_CAP_VM_ATTRIBUTES:
569568
case KVM_CAP_MP_STATE:

arch/x86/kvm/cpuid.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ int kvm_vcpu_ioctl_set_cpuid(struct kvm_vcpu *vcpu,
469469
return -E2BIG;
470470

471471
if (cpuid->nent) {
472-
e = vmemdup_user(entries, array_size(sizeof(*e), cpuid->nent));
472+
e = vmemdup_array_user(entries, cpuid->nent, sizeof(*e));
473473
if (IS_ERR(e))
474474
return PTR_ERR(e);
475475

@@ -513,7 +513,7 @@ int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu,
513513
return -E2BIG;
514514

515515
if (cpuid->nent) {
516-
e2 = vmemdup_user(entries, array_size(sizeof(*e2), cpuid->nent));
516+
e2 = vmemdup_array_user(entries, cpuid->nent, sizeof(*e2));
517517
if (IS_ERR(e2))
518518
return PTR_ERR(e2);
519519
}

virt/kvm/kvm_main.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4867,6 +4867,7 @@ static int kvm_vm_ioctl_check_extension_generic(struct kvm *kvm, long arg)
48674867
#endif
48684868
case KVM_CAP_BINARY_STATS_FD:
48694869
case KVM_CAP_SYSTEM_EVENT_DATA:
4870+
case KVM_CAP_DEVICE_CTRL:
48704871
return 1;
48714872
#ifdef CONFIG_KVM_GENERIC_MEMORY_ATTRIBUTES
48724873
case KVM_CAP_MEMORY_ATTRIBUTES:
@@ -5256,9 +5257,8 @@ static long kvm_vm_ioctl(struct file *filp,
52565257
goto out;
52575258
if (routing.nr) {
52585259
urouting = argp;
5259-
entries = vmemdup_user(urouting->entries,
5260-
array_size(sizeof(*entries),
5261-
routing.nr));
5260+
entries = vmemdup_array_user(urouting->entries,
5261+
routing.nr, sizeof(*entries));
52625262
if (IS_ERR(entries)) {
52635263
r = PTR_ERR(entries);
52645264
goto out;

0 commit comments

Comments
 (0)