qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kurz <groug@kaod.org>
To: "Cédric Le Goater" <clg@kaod.org>
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
	Bharata B Rao <bharata@linux.vnet.ibm.com>,
	David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [Qemu-devel] [PATCH 4/6] spapr: sanitize error handling in spapr_ics_create()
Date: Mon, 15 May 2017 14:06:18 +0200	[thread overview]
Message-ID: <20170515140618.22fad5fe@bahia> (raw)
In-Reply-To: <e962c484-f89f-8623-d66e-8a904e814359@kaod.org>

[-- Attachment #1: Type: text/plain, Size: 2515 bytes --]

On Mon, 15 May 2017 13:59:33 +0200
Cédric Le Goater <clg@kaod.org> wrote:

> On 05/15/2017 01:39 PM, Greg Kurz wrote:
> > The spapr_ics_create() function handles errors in a rather convoluted
> > way, with two local Error * variables. Moreover, failing to parent the
> > ICS object to the machine should be considered as a bug but it is
> > currently ignored.  
> 
> I am not sure what should be done for object_property_add_child()
> errors but QEMU generally uses NULL for 'Error **'. It might be 
> wrong though.
> 
> As for the local error handling, it is following what is described in 
> qapi/error.h. Isn't it ?
> 

Yes, it does follow the "Receive and accumulate multiple errors" recommandation,
but does it make sense to realize the ICS object if we failed to set nr-irqs ?

> Cheers,
> 
> C. 
> 
>  
> > This patch addresses both issues.
> > 
> > Signed-off-by: Greg Kurz <groug@kaod.org>
> > ---
> >  hw/ppc/spapr.c |   19 ++++++++++++-------
> >  1 file changed, 12 insertions(+), 7 deletions(-)
> > 
> > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > index 44f7dc7f40e9..c53989bb10b1 100644
> > --- a/hw/ppc/spapr.c
> > +++ b/hw/ppc/spapr.c
> > @@ -101,21 +101,26 @@ static ICSState *spapr_ics_create(sPAPRMachineState *spapr,
> >                                    const char *type_ics,
> >                                    int nr_irqs, Error **errp)
> >  {
> > -    Error *err = NULL, *local_err = NULL;
> > +    Error *local_err = NULL;
> >      Object *obj;
> >  
> >      obj = object_new(type_ics);
> > -    object_property_add_child(OBJECT(spapr), "ics", obj, NULL);
> > +    object_property_add_child(OBJECT(spapr), "ics", obj, &error_abort);
> >      object_property_add_const_link(obj, "xics", OBJECT(spapr), &error_abort);
> > -    object_property_set_int(obj, nr_irqs, "nr-irqs", &err);
> > +    object_property_set_int(obj, nr_irqs, "nr-irqs", &local_err);
> > +    if (local_err) {
> > +        goto error;
> > +    }
> >      object_property_set_bool(obj, true, "realized", &local_err);
> > -    error_propagate(&err, local_err);
> > -    if (err) {
> > -        error_propagate(errp, err);
> > -        return NULL;
> > +    if (local_err) {
> > +        goto error;
> >      }
> >  
> >      return ICS_SIMPLE(obj);
> > +
> > +error:
> > +    error_propagate(errp, local_err);
> > +    return NULL;
> >  }
> >  
> >  static void xics_system_init(MachineState *machine, int nr_irqs, Error **errp)
> >   
> 


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

  reply	other threads:[~2017-05-15 12:06 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-15 11:38 [Qemu-devel] [PATCH 0/6] spapr/xics: fix migration of older machine types Greg Kurz
2017-05-15 11:39 ` [Qemu-devel] [PATCH 1/6] ppc/xics: simplify prototype of xics_spapr_init() Greg Kurz
2017-05-15 12:09   ` Cédric Le Goater
2017-05-15 13:36   ` Philippe Mathieu-Daudé
2017-05-16  4:30   ` David Gibson
2017-05-15 11:39 ` [Qemu-devel] [PATCH 2/6] spapr: fix error path of required kernel-irqchip Greg Kurz
2017-05-15 11:47   ` Cédric Le Goater
2017-05-16  4:35   ` David Gibson
2017-05-16  5:56     ` Greg Kurz
2017-05-16  6:08       ` David Gibson
2017-05-16  6:22         ` Greg Kurz
2017-05-15 11:39 ` [Qemu-devel] [PATCH 3/6] spapr: fix error reporting in xics_system_init() Greg Kurz
2017-05-15 11:48   ` Cédric Le Goater
2017-05-16  4:37   ` David Gibson
2017-05-15 11:39 ` [Qemu-devel] [PATCH 4/6] spapr: sanitize error handling in spapr_ics_create() Greg Kurz
2017-05-15 11:59   ` Cédric Le Goater
2017-05-15 12:06     ` Greg Kurz [this message]
2017-05-16  4:39       ` David Gibson
2017-05-16  4:39   ` David Gibson
2017-05-15 11:39 ` [Qemu-devel] [PATCH 5/6] spapr-cpu-core: release ICP object when realization fails Greg Kurz
2017-05-15 12:02   ` Cédric Le Goater
2017-05-15 12:17     ` Greg Kurz
2017-05-16  4:41   ` David Gibson
2017-05-15 11:40 ` [Qemu-devel] [PATCH 6/6] spapr: fix migration of ICP objects from/to older QEMU Greg Kurz
2017-05-15 12:22   ` Cédric Le Goater
2017-05-15 13:16     ` Greg Kurz
2017-05-15 16:09       ` Cédric Le Goater
2017-05-15 16:20         ` Greg Kurz
2017-05-17  4:17           ` David Gibson
2017-05-15 16:11       ` Cédric Le Goater
2017-05-15 16:22         ` Greg Kurz
2017-05-17  4:18         ` David Gibson
2017-05-17 20:33           ` Greg Kurz
2017-05-19  6:40             ` David Gibson
2017-05-17  4:16       ` David Gibson
2017-05-17  4:14     ` David Gibson
2017-05-16  9:53   ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2017-05-15 12:13 ` [Qemu-devel] [PATCH 0/6] spapr/xics: fix migration of older machine types no-reply
2017-05-15 12:19   ` Greg Kurz

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=20170515140618.22fad5fe@bahia \
    --to=groug@kaod.org \
    --cc=bharata@linux.vnet.ibm.com \
    --cc=clg@kaod.org \
    --cc=david@gibson.dropbear.id.au \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).