KVM: Restrict non-existing slot state transitions
authorAlex Williamson <alex.williamson@redhat.com>
Mon, 10 Dec 2012 17:32:45 +0000 (10:32 -0700)
committerMarcelo Tosatti <mtosatti@redhat.com>
Fri, 14 Dec 2012 01:21:50 +0000 (23:21 -0200)
commitf0736cf0550b349a5d5a374d65ca0488cc2eee40
treed72fbc1acd03c5047961bcfb5d4063137a392384
parentf3200d00ea42e485772ff92d6d649aa8eeb640c0
KVM: Restrict non-existing slot state transitions

The API documentation states:

When changing an existing slot, it may be moved in the guest
physical memory space, or its flags may be modified.

An "existing slot" requires a non-zero npages (memory_size).  The only
transition we should therefore allow for a non-existing slot should be
to create the slot, which includes setting a non-zero memory_size.  We
currently allow calls to modify non-existing slots, which is pointless,
confusing, and possibly wrong.

With this we know that the invalidation path of __kvm_set_memory_region
is always for a delete or move and never for adding a zero size slot.

Reviewed-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
virt/kvm/kvm_main.c