On Fri, Oct 01, 2021 at 07:08:51PM +0200, Paolo Bonzini wrote:
> On 29/09/21 04:58, Yanan Wang wrote:
> > @@ -933,8 +935,7 @@ static void machine_set_smp(Object *obj, Visitor *v,
> > const char *name,
> > return;
> > }
> > - smp_parse(ms, config, errp);
> > - if (*errp) {
> > + if (!smp_parse(ms, config, errp)) {
> > qapi_free_SMPConfiguration(config);
> > }
> > }
> >
>
> This is actually a leak, so I'm replacing this patch with
This patch isn't adding a leak, as there's no change in
control flow / exit paths. AFAICT, the leak was introduced
in patch 15 instead, so the code below shoudl be squashed
into that, and this patch left as-is.
>
> diff --git a/hw/core/machine.c b/hw/core/machine.c
> index 54f04a5ac6..d49ebc24e2 100644
> --- a/hw/core/machine.c
> +++ b/hw/core/machine.c
> @@ -897,7 +897,7 @@ static void machine_set_smp(Object *obj, Visitor *v,
> const char *name,
> {
> MachineClass *mc = MACHINE_GET_CLASS(obj);
> MachineState *ms = MACHINE(obj);
> - SMPConfiguration *config;
> + g_autoptr(SMPConfiguration) config = NULL;
> ERRP_GUARD();
> if (!visit_type_SMPConfiguration(v, name, &config, errp)) {
> @@ -920,7 +920,7 @@ static void machine_set_smp(Object *obj, Visitor *v,
> const char *name,
> smp_parse(ms, config, errp);
> if (*errp) {
> - goto out_free;
> + return;
> }
> /* sanity-check smp_cpus and max_cpus against mc */
> @@ -935,9 +935,6 @@ static void machine_set_smp(Object *obj, Visitor *v,
> const char *name,
> ms->smp.max_cpus,
> mc->name, mc->max_cpus);
> }
> -
> -out_free:
> - qapi_free_SMPConfiguration(config);
> }
> static void machine_class_init(ObjectClass *oc, void *data)
>
> which removes the need.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|