From: Igor Mammedov Date: Tue, 6 Oct 2015 08:37:28 +0000 (+0200) Subject: pc-dimm: add vhost slots limit check before commiting to hotplug X-Git-Tag: TizenStudio_2.0_p2.3.2~120^2~1^2~116^2~33 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3fad87881e55aaff659408dcf25fa204f89a7896;p=sdk%2Femulator%2Fqemu.git pc-dimm: add vhost slots limit check before commiting to hotplug it allows safely cancel memory hotplug if vhost backend doesn't support necessary amount of memory slots and prevents QEMU crashing in vhost due to hitting vhost limit on amount of supported memory ranges. Signed-off-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c index 506fe0d..2bae994 100644 --- a/hw/mem/pc-dimm.c +++ b/hw/mem/pc-dimm.c @@ -25,6 +25,7 @@ #include "sysemu/numa.h" #include "sysemu/kvm.h" #include "trace.h" +#include "hw/virtio/vhost.h" typedef struct pc_dimms_capacity { uint64_t size; @@ -96,6 +97,12 @@ void pc_dimm_memory_plug(DeviceState *dev, MemoryHotplugState *hpms, goto out; } + if (!vhost_has_free_slot()) { + error_setg(&local_err, "a used vhost backend has no free" + " memory slots left"); + goto out; + } + memory_region_add_subregion(&hpms->mr, addr - hpms->base, mr); vmstate_register_ram(mr, dev); numa_set_mem_node_id(addr, memory_region_size(mr), dimm->node);