diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 287c51dc9116b1d817b6013eb9a01bc304f01634..b7b85aba31dcdba0c3049209590e040b810ca333 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 0000000000000000000000000000000000000000..8a4e56d5926ad79073e6d3e84fb0f699cae9371d --- /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 bee66372767b5c2fc29a06cf867da67e20cd1f3d..24c1f301e4b97f1f7c85405b8e999d5cf6496458 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);