From 64985217bc57510cb9549200182be3691640e04b Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 7 Apr 2015 20:44:15 +0200 Subject: [PATCH] qemu: Fix condition for checking vcpu when pinning vcpus Previously we checked that the vcpu we are trying to set is in range of the number of threads presented by qemu. The problem is that if the VM is offline the count is 0. Since the condition subtracted 1 from the count the number would overflow and the check would never trigger. Change the condition for more sensible ones with specific error messages. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1208434 --- src/qemu/qemu_driver.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index cbb6e1b6c1..addd03dab9 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -5150,10 +5150,17 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, priv = vm->privateData; - if (vcpu > (priv->nvcpupids-1)) { + if ((flags & VIR_DOMAIN_AFFECT_LIVE) && vcpu >= vm->def->vcpus) { virReportError(VIR_ERR_INVALID_ARG, - _("vcpu number out of range %d > %d"), - vcpu, priv->nvcpupids - 1); + _("vcpu %d is out of range of live cpu count %d"), + vcpu, vm->def->vcpus); + goto endjob; + } + + if ((flags & VIR_DOMAIN_AFFECT_CONFIG) && vcpu >= persistentDef->vcpus) { + virReportError(VIR_ERR_INVALID_ARG, + _("vcpu %d is out of range of persistent cpu count %d"), + vcpu, persistentDef->vcpus); goto endjob; } -- 2.39.5