From 2cb86fc26028385bc604ff34d279f3de1b052d8a Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 18 Jun 2019 10:04:32 +0200 Subject: [PATCH] qemu: Implement support for 'capability_filters' config option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Filter out the given capabilities and set domain taint if we've done so. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- src/qemu/qemu_domain.c | 3 ++- src/qemu/qemu_process.c | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 0a9056d1a0..1326c3d6b1 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -8339,7 +8339,8 @@ void qemuDomainObjCheckTaint(virQEMUDriverPtr driver, custom_hypervisor_feat = true; } - if (custom_hypervisor_feat) { + if (custom_hypervisor_feat || + (cfg->capabilityfilters && *cfg->capabilityfilters)) { qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_CUSTOM_HYPERVISOR_FEATURE, logCtxt); } diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index f0d410306c..aa09ef175a 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -5452,10 +5452,25 @@ static int qemuProcessStartUpdateCustomCaps(virDomainObjPtr vm) { qemuDomainObjPrivatePtr priv = vm->privateData; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(priv->driver); qemuDomainXmlNsDefPtr nsdef = vm->def->namespaceData; + char **next; int tmp; size_t i; + if (cfg->capabilityfilters) { + for (next = cfg->capabilityfilters; *next; next++) { + if ((tmp = virQEMUCapsTypeFromString(*next)) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("invalid capability_filters capability '%s'"), + *next); + return -1; + } + + virQEMUCapsClear(priv->qemuCaps, tmp); + } + } + if (nsdef) { for (i = 0; i < nsdef->ncapsadd; i++) { if ((tmp = virQEMUCapsTypeFromString(nsdef->capsadd[i])) < 0) { -- GitLab