KVM: set_memory_region: Don't check for overlaps unless we create or move a slot
Don't need the check for deleting an existing slot or just modifiying the flags. Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp> Signed-off-by: Gleb Natapov <gleb@redhat.com>
This commit is contained in:
parent
0ea75e1d26
commit
0a706beefb
1 changed files with 10 additions and 8 deletions
|
@ -782,14 +782,16 @@ int __kvm_set_memory_region(struct kvm *kvm,
|
||||||
if (!npages && !old.npages)
|
if (!npages && !old.npages)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
/* Check for overlaps */
|
if ((npages && !old.npages) || (base_gfn != old.base_gfn)) {
|
||||||
r = -EEXIST;
|
/* Check for overlaps */
|
||||||
kvm_for_each_memslot(slot, kvm->memslots) {
|
r = -EEXIST;
|
||||||
if (slot->id >= KVM_USER_MEM_SLOTS || slot == memslot)
|
kvm_for_each_memslot(slot, kvm->memslots) {
|
||||||
continue;
|
if (slot->id >= KVM_USER_MEM_SLOTS || slot == memslot)
|
||||||
if (!((base_gfn + npages <= slot->base_gfn) ||
|
continue;
|
||||||
(base_gfn >= slot->base_gfn + slot->npages)))
|
if (!((base_gfn + npages <= slot->base_gfn) ||
|
||||||
goto out;
|
(base_gfn >= slot->base_gfn + slot->npages)))
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Free page dirty bitmap if unneeded */
|
/* Free page dirty bitmap if unneeded */
|
||||||
|
|
Loading…
Add table
Reference in a new issue