From: Luyao Huang Date: Wed, 17 Jun 2015 03:56:21 +0000 (+0800) Subject: qemu: report error when shmem has an invalid address X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=955d9bb8d0071a9cc7d4851eb329054fa4a97cbf;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git qemu: report error when shmem has an invalid address If user passes an invalid address for shared memory device to qemu, neither libvirt nor qemu will report an error, but qemu will auto assign a pci address to the shared memory device. Signed-off-by: Luyao Huang --- diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 287c51dc9..b7b85aba3 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -8575,6 +8575,13 @@ qemuBuildShmemDevStr(virDomainDefPtr def, } } + if (shmem->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("only 'pci' addresses are supported for the " + "shared memory device")); + goto error; + } + if (qemuBuildDeviceAddressStr(&buf, def, &shmem->info, qemuCaps) < 0) goto error; diff --git a/tests/qemuxml2argvdata/qemuxml2argv-shmem-invalid-address.xml b/tests/qemuxml2argvdata/qemuxml2argv-shmem-invalid-address.xml new file mode 100644 index 000000000..8a4e56d59 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-shmem-invalid-address.xml @@ -0,0 +1,24 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu + + + + +
+ + + diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index bee663727..24c1f301e 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1614,6 +1614,8 @@ mymain(void) DO_TEST_FAILURE("shmem", NONE); DO_TEST_FAILURE("shmem-invalid-size", QEMU_CAPS_PCIDEVICE, QEMU_CAPS_DEVICE, QEMU_CAPS_DEVICE_IVSHMEM); + DO_TEST_FAILURE("shmem-invalid-address", QEMU_CAPS_PCIDEVICE, + QEMU_CAPS_DEVICE, QEMU_CAPS_DEVICE_IVSHMEM); DO_TEST_FAILURE("shmem-small-size", QEMU_CAPS_PCIDEVICE, QEMU_CAPS_DEVICE, QEMU_CAPS_DEVICE_IVSHMEM); DO_TEST_PARSE_ERROR("shmem-msi-only", NONE);