forked from rpms/libvirt
bf8db99000
- qemu: monitor: Drop old monitor fields from 'struct _qemuMonitorMessage' (rhbz#2170472) - qemu: Make 'struct _qemuMonitorMessage' private (rhbz#2170472) - qemu: monitor: Move declaration of struct _qemuMonitor to qemu_monitor_priv.h (rhbz#2170472) - qemu: qemuBlockGetNamedNodeData: Remove pointless error path (rhbz#2170472) - qemu: monitor: Store whether 'query-named-block-nodes' supports 'flat' parameter (rhbz#2170472) - qemuMonitorJSONBlockStatsUpdateCapacityBlockdev: Use 'flat' mode of query-named-block-nodes (rhbz#2170472) - qemu: relax shared memory check for vhostuser daemons (rhbz#2177701) - virpci: Resolve leak in virPCIVirtualFunctionList cleanup (CVE-2023-2700) - node_device_conf: Avoid memleak in virNodeDeviceGetPCIVPDDynamicCap() (CVE-2023-2700) Resolves: rhbz#2170472, rhbz#2177701, rhbz#2203654
66 lines
2.8 KiB
Diff
66 lines
2.8 KiB
Diff
From e9418cec1ba24b6cf78f85bbbef8586ed612692a Mon Sep 17 00:00:00 2001
|
|
Message-Id: <e9418cec1ba24b6cf78f85bbbef8586ed612692a@dist-git>
|
|
From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
|
|
Date: Mon, 13 Mar 2023 13:56:47 +0100
|
|
Subject: [PATCH] qemu: relax shared memory check for vhostuser daemons
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
For some vhostuser daemons, we validate that the guest memory is shared
|
|
with the host.
|
|
|
|
With earlier versions of QEMU, it was only possible to mark memory
|
|
as shared by defining an explicit NUMA topology. Later, QEMU exposed
|
|
the name of the default memory backend (defaultRAMid) so we can mark
|
|
that memory as shared.
|
|
|
|
Since libvirt commit:
|
|
commit bff2ad5d6b1f25da02802273934d2a519159fec7
|
|
qemu: Relax validation for mem->access if guest has no NUMA
|
|
we already check for the case when user requests shared memory,
|
|
but QEMU did not expose defaultRAMid.
|
|
|
|
Drop the duplicit check from vhostuser device validation, to make
|
|
it pass on hotplug even after libvirtd restart.
|
|
|
|
This avoids the need to store the defaultRAMid, since we don't really
|
|
need it for anything after the VM has been already started.
|
|
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=2078693
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=2177701
|
|
|
|
Signed-off-by: Ján Tomko <jtomko@redhat.com>
|
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
(cherry picked from commit d5c7b7870e45575f81fffcb611c2546d0e02e778)
|
|
Signed-off-by: Ján Tomko <jtomko@redhat.com>
|
|
---
|
|
src/qemu/qemu_validate.c | 8 ++------
|
|
1 file changed, 2 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
|
|
index 7bc14293d6..4069f47c12 100644
|
|
--- a/src/qemu/qemu_validate.c
|
|
+++ b/src/qemu/qemu_validate.c
|
|
@@ -1588,16 +1588,12 @@ qemuValidateDomainVirtioOptions(const virDomainVirtioOptions *virtio,
|
|
static int
|
|
qemuValidateDomainDefVhostUserRequireSharedMemory(const virDomainDef *def,
|
|
const char *name,
|
|
- virQEMUCaps *qemuCaps)
|
|
+ virQEMUCaps *qemuCaps G_GNUC_UNUSED)
|
|
{
|
|
- const char *defaultRAMId = virQEMUCapsGetMachineDefaultRAMid(qemuCaps,
|
|
- def->virtType,
|
|
- def->os.machine);
|
|
size_t numa_nodes = virDomainNumaGetNodeCount(def->numa);
|
|
size_t i;
|
|
|
|
- if (numa_nodes == 0 &&
|
|
- !(defaultRAMId && def->mem.access == VIR_DOMAIN_MEMORY_ACCESS_SHARED)) {
|
|
+ if (numa_nodes == 0 && def->mem.access != VIR_DOMAIN_MEMORY_ACCESS_SHARED) {
|
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
|
_("'%s' requires shared memory"), name);
|
|
return -1;
|
|
--
|
|
2.40.1
|