From: Daniel P. Berrangé Date: Thu, 12 Aug 2021 17:53:53 +0000 (+0100) Subject: hw/core: fix error checking in smp_parse X-Git-Tag: qemu-xen-4.16.0-rc4~9^2 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=ea0aa1752ca88f7856cbf40eef0db62f90f28dcd;p=qemu-xen.git hw/core: fix error checking in smp_parse machine_set_smp() mistakenly checks 'errp' not '*errp', and so thinks there is an error every single time it runs. This causes it to jump to the end of the method, skipping the max CPUs checks. The caller meanwhile sees no error and so carries on execution. The result of all this is: $ qemu-system-x86_64 -smp -1 qemu-system-x86_64: GLib: ../glib/gmem.c:142: failed to allocate 481036337048 bytes instead of $ qemu-system-x86_64 -smp -1 qemu-system-x86_64: Invalid SMP CPUs -1. The max CPUs supported by machine 'pc-i440fx-6.1' is 255 This is a regression from commit fe68090e8fbd6e831aaf3fc3bb0459c5cccf14cf Author: Paolo Bonzini Date: Thu May 13 09:03:48 2021 -0400 machine: add smp compound property Closes: https://gitlab.com/qemu-project/qemu/-/issues/524 Signed-off-by: Daniel P. Berrangé Message-Id: <20210812175353.4128471-1-berrange@redhat.com> Signed-off-by: Paolo Bonzini --- diff --git a/hw/core/machine.c b/hw/core/machine.c index abaeda589b..54e040587d 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -833,7 +833,7 @@ static void machine_set_smp(Object *obj, Visitor *v, const char *name, } mc->smp_parse(ms, config, errp); - if (errp) { + if (*errp) { goto out_free; }