All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Andrew Jones" <drjones@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Pierre Morel" <pmorel@linux.ibm.com>,
	"Pankaj Gupta" <pankaj.gupta.linux@gmail.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	"Cornelia Huck" <cohuck@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	qemu-devel@nongnu.org, "Yanan Wang" <wangyanan55@huawei.com>,
	qemu-s390x@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
	wanghaibin.wang@huawei.com,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"David Gibson" <david@gibson.dropbear.id.au>
Subject: Re: [PATCH v12 16/16] machine: Make smp_parse return a boolean
Date: Sat, 2 Oct 2021 08:40:46 +0200	[thread overview]
Message-ID: <afa63e10-2999-4073-e440-a5d87fd6da49@redhat.com> (raw)
In-Reply-To: <YVdCRYvRHIio6MZe@redhat.com>

On 01/10/21 19:15, Daniel P. Berrangé wrote:
> 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.

Yes, even better make it a separate patch and fix the conflict in patch
15.  But I'm still not sure of the wisdom of this patch.

At this point smp_parse has exactly one caller and it doesn't care about
the return value.  The "return a boolean" rule adds some complexity (and
a possibility for things to be wrong/inconsistent) to the function for
the benefit of the callers.  If there is only one caller, as is the case
here or for virtual functions, the benefit can well be zero (this case)
or negative (virtual functions).

Paolo

---------------- 8< ----------------
 From e7f944bb94a375e8ee7469ffa535ea6e11ce59e1 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Fri, 1 Oct 2021 19:04:03 +0200
Subject: [PATCH] machine: Use g_autoptr in machine_set_smp

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
  hw/core/machine.c | 7 ++-----
  1 file changed, 2 insertions(+), 5 deletions(-)

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)
-- 
2.31.1



  parent reply	other threads:[~2021-10-02  6:42 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-29  2:58 [PATCH v12 00/16] machine: smp parsing fixes and improvement Yanan Wang
2021-09-29  2:58 ` [PATCH v12 01/16] qapi/machine: Fix an incorrect comment of SMPConfiguration Yanan Wang
2021-09-29  2:58 ` [PATCH v12 02/16] machine: Deprecate "parameter=0" SMP configurations Yanan Wang
2021-09-29  2:58 ` [PATCH v12 03/16] machine: Minor refactor/fix for the smp parsers Yanan Wang
2021-09-29  2:58 ` [PATCH v12 04/16] machine: Uniformly use maxcpus to calculate the omitted parameters Yanan Wang
2021-09-29  2:58 ` [PATCH v12 05/16] machine: Set the value of cpus to match maxcpus if it's omitted Yanan Wang
2021-09-29  2:58 ` [PATCH v12 06/16] machine: Improve the error reporting of smp parsing Yanan Wang
2021-09-29  2:58 ` [PATCH v12 07/16] qtest/numa-test: Use detailed -smp CLIs in pc_dynamic_cpu_cfg Yanan Wang
2021-09-29  2:58 ` [PATCH v12 08/16] qtest/numa-test: Use detailed -smp CLIs in test_def_cpu_split Yanan Wang
2021-09-29  2:58 ` [PATCH v12 09/16] machine: Prefer cores over sockets in smp parsing since 6.2 Yanan Wang
2021-09-29  2:58 ` [PATCH v12 10/16] machine: Use ms instead of global current_machine in sanity-check Yanan Wang
2021-09-29  2:58 ` [PATCH v12 11/16] machine: Tweak the order of topology members in struct CpuTopology Yanan Wang
2021-09-29  2:58 ` [PATCH v12 12/16] machine: Make smp_parse generic enough for all arches Yanan Wang
2021-09-29  2:58 ` [PATCH v12 13/16] machine: Remove smp_parse callback from MachineClass Yanan Wang
2021-09-29  2:58 ` [PATCH v12 14/16] machine: Move smp_prefer_sockets to struct SMPCompatProps Yanan Wang
2021-09-29  2:58 ` [PATCH v12 15/16] machine: Put all sanity-check in the generic SMP parser Yanan Wang
2021-09-29  2:58 ` [PATCH v12 16/16] machine: Make smp_parse return a boolean Yanan Wang
2021-09-29  8:27   ` Philippe Mathieu-Daudé
2021-09-29  8:28   ` Daniel P. Berrangé
2021-09-29 11:22   ` Markus Armbruster
2021-10-01 17:08   ` Paolo Bonzini
2021-10-01 17:15     ` Daniel P. Berrangé
2021-10-02  5:26       ` Markus Armbruster
2021-10-02  6:40       ` Paolo Bonzini [this message]
2021-10-02 11:27         ` Markus Armbruster
2021-10-07  3:44           ` wangyanan (Y)
2021-10-07  8:30             ` Paolo Bonzini
2021-10-07  8:29           ` Paolo Bonzini
2021-10-07 12:03             ` Markus Armbruster
2021-09-29 12:39 ` [PATCH v12 00/16] machine: smp parsing fixes and improvement Paolo Bonzini
2021-09-29 14:46   ` Markus Armbruster
2021-09-29 14:57     ` Paolo Bonzini
2021-09-30  1:02       ` wangyanan (Y)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=afa63e10-2999-4073-e440-a5d87fd6da49@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=cohuck@redhat.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=drjones@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=mst@redhat.com \
    --cc=pankaj.gupta.linux@gmail.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@redhat.com \
    --cc=pmorel@linux.ibm.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=wanghaibin.wang@huawei.com \
    --cc=wangyanan55@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.