]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
KVM: Disallow all flags for KVM-internal memslots
authorSean Christopherson <seanjc@google.com>
Sat, 11 Jan 2025 00:20:22 +0000 (16:20 -0800)
committerSean Christopherson <seanjc@google.com>
Wed, 15 Jan 2025 01:36:16 +0000 (17:36 -0800)
Disallow all flags for KVM-internal memslots as all existing flags require
some amount of userspace interaction to have any meaning.  In addition to
guarding against KVM goofs, explicitly disallowing dirty logging of KVM-
internal memslots will (hopefully) allow exempting KVM-internal memslots
from the KVM_MEM_MAX_NR_PAGES limit, which appears to exist purely because
the dirty bitmap operations use a 32-bit index.

Cc: Xiaoyao Li <xiaoyao.li@intel.com>
Cc: Claudio Imbrenda <imbrenda@linux.ibm.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Acked-by: Christoph Schlameuss <schlameuss@linux.ibm.com>
Link: https://lore.kernel.org/r/20250111002022.1230573-6-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
virt/kvm/kvm_main.c

index ecd4a66b22f3f9ea731de1bd26a4eb0dc4dfdff7..a8a84bf450f98b5af2c75c96988ab9663d6b6007 100644 (file)
@@ -2057,6 +2057,9 @@ int kvm_set_internal_memslot(struct kvm *kvm,
        if (WARN_ON_ONCE(mem->slot < KVM_USER_MEM_SLOTS))
                return -EINVAL;
 
+       if (WARN_ON_ONCE(mem->flags))
+               return -EINVAL;
+
        return kvm_set_memory_region(kvm, mem);
 }
 EXPORT_SYMBOL_GPL(kvm_set_internal_memslot);