On Thu, Aug 12, 2021 at 06:53:53PM +0100, Daniel P. Berrangé wrote: > The 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 <pbonz...@redhat.com> > 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é <berra...@redhat.com>
I will prepare a pull request with this, just in case we are already going to have a -rc4. I don't think this bug alone should delay release of 6.1, though. > --- > hw/core/machine.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/core/machine.c b/hw/core/machine.c > index 943974d411..ab4fca6546 100644 > --- a/hw/core/machine.c > +++ b/hw/core/machine.c > @@ -832,7 +832,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; > } > > -- > 2.31.1 > -- Eduardo