qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH for-4.0] hw/i386/pc: Fix crash when hot-plugging


From: Eduardo Habkost
Subject: Re: [Qemu-devel] [PATCH for-4.0] hw/i386/pc: Fix crash when hot-plugging nvdimm on older machine types
Date: Mon, 8 Apr 2019 19:26:01 -0300
User-agent: Mutt/1.10.1 (2018-07-13)

On Mon, Apr 08, 2019 at 05:06:49PM +0200, Thomas Huth wrote:
> On 08/04/2019 15.45, Wei Yang wrote:
[...]
> > diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> > index 6077d27361..b11f3b15c1 100644
> > --- a/hw/i386/pc.c
> > +++ b/hw/i386/pc.c
> > @@ -2091,6 +2091,9 @@ static void pc_memory_pre_plug(HotplugHandler 
> > *hotplug_dev, DeviceState *dev,
> >      }
> >  
> >      hotplug_handler_pre_plug(pcms->acpi_dev, dev, errp);
> > +    if (*errp) {
> > +        return;
> > +    }
> 
> Not sure, but I think you can not rely on the fact that the caller set
> *errp = NULL already... that's why it is more common to use a local_err
> variable and error_propagate() for such cases (which is what I did in my
> patch).

*errp can't be non-NULL (otherwise functions calling error_setg()
would crash).  errp can be NULL, though, and that's why you need
a local_err variable.

I'd love to eliminate NULL errp from our codebase, but I couldn't
find a way to do it that is safe and simple (i.e. not letting us
pass NULL errp by mistake and not requiring a macro wrapping
every `&local_err` expression).

-- 
Eduardo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]