* Re: [Qemu-devel] [PATCH 1/3] virtio-ccw: remove qdev_unparent in unplug routing
[not found] ` <512B46C3.4030805@de.ibm.com>
@ 2013-03-08 20:11 ` Alexander Graf
2013-03-11 12:04 ` Cornelia Huck
0 siblings, 1 reply; 5+ messages in thread
From: Alexander Graf @ 2013-03-08 20:11 UTC (permalink / raw)
To: Christian Borntraeger
Cc: Cornelia Huck, Paolo Bonzini, Jens Freimann, qemu-devel,
Andreas Färber
On 25.02.2013, at 12:10, Christian Borntraeger wrote:
> On 25/02/13 11:44, Paolo Bonzini wrote:
>> Il 25/02/2013 09:09, Christian Borntraeger ha scritto:
>>> Hmm, the old sequence was
>>>
>>> object_unparent(OBJECT(dev));
>>> qdev_free(dev) ---+
>>> |
>>> V
>>> ...
>>> object_unparent(OBJECT(dev)); now the last reference is gone, object is freed
>>> object_unref(OBJECT(dev)); now the reference of a deleted object becomes -1
>>> ...
>>>
>>> Isnt that a problem in itself that we modify a reference counter in an deleted object?
>>
>> The second object_unparent should do nothing. So before you had:
>>
>> object_unparent(OBJECT(dev)); leaves refcount=1
>> qdev_free(dev) ---+
>> |
>> V
>> object_unparent(OBJECT(dev)); do nothing
>> object_unref(OBJECT(dev)); refcount=0, object freed
>>
>> After the object_unref was removed you had:
>>
>> object_unparent(OBJECT(dev)); refcount=0, object freed
>> qdev_free(dev) ---+
>> |
>> V
>> object_unparent(OBJECT(dev)); dangling pointer!
>>
>
>
> Got it. Thanks
So is the patch valid?
Alex
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] virtio-ccw: remove qdev_unparent in unplug routing
2013-03-08 20:11 ` [Qemu-devel] [PATCH 1/3] virtio-ccw: remove qdev_unparent in unplug routing Alexander Graf
@ 2013-03-11 12:04 ` Cornelia Huck
2013-03-11 12:16 ` Paolo Bonzini
0 siblings, 1 reply; 5+ messages in thread
From: Cornelia Huck @ 2013-03-11 12:04 UTC (permalink / raw)
To: Alexander Graf
Cc: Christian Borntraeger, Jens Freimann, qemu-devel,
Andreas Färber, Paolo Bonzini
On Fri, 8 Mar 2013 21:11:13 +0100
Alexander Graf <agraf@suse.de> wrote:
>
> On 25.02.2013, at 12:10, Christian Borntraeger wrote:
>
> > On 25/02/13 11:44, Paolo Bonzini wrote:
> >> Il 25/02/2013 09:09, Christian Borntraeger ha scritto:
> >>> Hmm, the old sequence was
> >>>
> >>> object_unparent(OBJECT(dev));
> >>> qdev_free(dev) ---+
> >>> |
> >>> V
> >>> ...
> >>> object_unparent(OBJECT(dev)); now the last reference is gone, object is freed
> >>> object_unref(OBJECT(dev)); now the reference of a deleted object becomes -1
> >>> ...
> >>>
> >>> Isnt that a problem in itself that we modify a reference counter in an deleted object?
> >>
> >> The second object_unparent should do nothing. So before you had:
> >>
> >> object_unparent(OBJECT(dev)); leaves refcount=1
> >> qdev_free(dev) ---+
> >> |
> >> V
> >> object_unparent(OBJECT(dev)); do nothing
> >> object_unref(OBJECT(dev)); refcount=0, object freed
> >>
> >> After the object_unref was removed you had:
> >>
> >> object_unparent(OBJECT(dev)); refcount=0, object freed
> >> qdev_free(dev) ---+
> >> |
> >> V
> >> object_unparent(OBJECT(dev)); dangling pointer!
> >>
> >
> >
> > Got it. Thanks
>
> So is the patch valid?
To my understanding, yes.
>
>
> Alex
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] virtio-ccw: remove qdev_unparent in unplug routing
2013-03-11 12:04 ` Cornelia Huck
@ 2013-03-11 12:16 ` Paolo Bonzini
2013-03-11 12:22 ` Alexander Graf
0 siblings, 1 reply; 5+ messages in thread
From: Paolo Bonzini @ 2013-03-11 12:16 UTC (permalink / raw)
To: Cornelia Huck
Cc: Christian Borntraeger, Jens Freimann, Alexander Graf,
Andreas Färber, qemu-devel
Il 11/03/2013 13:04, Cornelia Huck ha scritto:
> On Fri, 8 Mar 2013 21:11:13 +0100
> Alexander Graf <agraf@suse.de> wrote:
>
>>
>> On 25.02.2013, at 12:10, Christian Borntraeger wrote:
>>
>>> On 25/02/13 11:44, Paolo Bonzini wrote:
>>>> Il 25/02/2013 09:09, Christian Borntraeger ha scritto:
>>>>> Hmm, the old sequence was
>>>>>
>>>>> object_unparent(OBJECT(dev));
>>>>> qdev_free(dev) ---+
>>>>> |
>>>>> V
>>>>> ...
>>>>> object_unparent(OBJECT(dev)); now the last reference is gone, object is freed
>>>>> object_unref(OBJECT(dev)); now the reference of a deleted object becomes -1
>>>>> ...
>>>>>
>>>>> Isnt that a problem in itself that we modify a reference counter in an deleted object?
>>>>
>>>> The second object_unparent should do nothing. So before you had:
>>>>
>>>> object_unparent(OBJECT(dev)); leaves refcount=1
>>>> qdev_free(dev) ---+
>>>> |
>>>> V
>>>> object_unparent(OBJECT(dev)); do nothing
>>>> object_unref(OBJECT(dev)); refcount=0, object freed
>>>>
>>>> After the object_unref was removed you had:
>>>>
>>>> object_unparent(OBJECT(dev)); refcount=0, object freed
>>>> qdev_free(dev) ---+
>>>> |
>>>> V
>>>> object_unparent(OBJECT(dev)); dangling pointer!
>>>>
>>>
>>>
>>> Got it. Thanks
>>
>> So is the patch valid?
>
> To my understanding, yes.
Yes, except that the "fixed a crash" part in the commit message is
probably no longer accurate. No big deal. :)
Paolo
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] virtio-ccw: remove qdev_unparent in unplug routing
2013-03-11 12:16 ` Paolo Bonzini
@ 2013-03-11 12:22 ` Alexander Graf
2013-03-11 12:32 ` Cornelia Huck
0 siblings, 1 reply; 5+ messages in thread
From: Alexander Graf @ 2013-03-11 12:22 UTC (permalink / raw)
To: Paolo Bonzini
Cc: Cornelia Huck, Christian Borntraeger, Jens Freimann, qemu-devel,
Andreas Färber
On 03/11/2013 01:16 PM, Paolo Bonzini wrote:
> Il 11/03/2013 13:04, Cornelia Huck ha scritto:
>> On Fri, 8 Mar 2013 21:11:13 +0100
>> Alexander Graf<agraf@suse.de> wrote:
>>
>>> On 25.02.2013, at 12:10, Christian Borntraeger wrote:
>>>
>>>> On 25/02/13 11:44, Paolo Bonzini wrote:
>>>>> Il 25/02/2013 09:09, Christian Borntraeger ha scritto:
>>>>>> Hmm, the old sequence was
>>>>>>
>>>>>> object_unparent(OBJECT(dev));
>>>>>> qdev_free(dev) ---+
>>>>>> |
>>>>>> V
>>>>>> ...
>>>>>> object_unparent(OBJECT(dev)); now the last reference is gone, object is freed
>>>>>> object_unref(OBJECT(dev)); now the reference of a deleted object becomes -1
>>>>>> ...
>>>>>>
>>>>>> Isnt that a problem in itself that we modify a reference counter in an deleted object?
>>>>> The second object_unparent should do nothing. So before you had:
>>>>>
>>>>> object_unparent(OBJECT(dev)); leaves refcount=1
>>>>> qdev_free(dev) ---+
>>>>> |
>>>>> V
>>>>> object_unparent(OBJECT(dev)); do nothing
>>>>> object_unref(OBJECT(dev)); refcount=0, object freed
>>>>>
>>>>> After the object_unref was removed you had:
>>>>>
>>>>> object_unparent(OBJECT(dev)); refcount=0, object freed
>>>>> qdev_free(dev) ---+
>>>>> |
>>>>> V
>>>>> object_unparent(OBJECT(dev)); dangling pointer!
>>>>>
>>>>
>>>> Got it. Thanks
>>> So is the patch valid?
>> To my understanding, yes.
> Yes, except that the "fixed a crash" part in the commit message is
> probably no longer accurate. No big deal. :)
Ok, Connie could you please include it in your next pull then please?
Alex
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] virtio-ccw: remove qdev_unparent in unplug routing
2013-03-11 12:22 ` Alexander Graf
@ 2013-03-11 12:32 ` Cornelia Huck
0 siblings, 0 replies; 5+ messages in thread
From: Cornelia Huck @ 2013-03-11 12:32 UTC (permalink / raw)
To: Alexander Graf
Cc: Paolo Bonzini, Jens Freimann, qemu-devel, Andreas Färber,
Christian Borntraeger
On Mon, 11 Mar 2013 13:22:45 +0100
Alexander Graf <agraf@suse.de> wrote:
> On 03/11/2013 01:16 PM, Paolo Bonzini wrote:
> > Il 11/03/2013 13:04, Cornelia Huck ha scritto:
> >> On Fri, 8 Mar 2013 21:11:13 +0100
> >> Alexander Graf<agraf@suse.de> wrote:
> >>
> >>> On 25.02.2013, at 12:10, Christian Borntraeger wrote:
> >>>
> >>>> On 25/02/13 11:44, Paolo Bonzini wrote:
> >>>>> Il 25/02/2013 09:09, Christian Borntraeger ha scritto:
> >>>>>> Hmm, the old sequence was
> >>>>>>
> >>>>>> object_unparent(OBJECT(dev));
> >>>>>> qdev_free(dev) ---+
> >>>>>> |
> >>>>>> V
> >>>>>> ...
> >>>>>> object_unparent(OBJECT(dev)); now the last reference is gone, object is freed
> >>>>>> object_unref(OBJECT(dev)); now the reference of a deleted object becomes -1
> >>>>>> ...
> >>>>>>
> >>>>>> Isnt that a problem in itself that we modify a reference counter in an deleted object?
> >>>>> The second object_unparent should do nothing. So before you had:
> >>>>>
> >>>>> object_unparent(OBJECT(dev)); leaves refcount=1
> >>>>> qdev_free(dev) ---+
> >>>>> |
> >>>>> V
> >>>>> object_unparent(OBJECT(dev)); do nothing
> >>>>> object_unref(OBJECT(dev)); refcount=0, object freed
> >>>>>
> >>>>> After the object_unref was removed you had:
> >>>>>
> >>>>> object_unparent(OBJECT(dev)); refcount=0, object freed
> >>>>> qdev_free(dev) ---+
> >>>>> |
> >>>>> V
> >>>>> object_unparent(OBJECT(dev)); dangling pointer!
> >>>>>
> >>>>
> >>>> Got it. Thanks
> >>> So is the patch valid?
> >> To my understanding, yes.
> > Yes, except that the "fixed a crash" part in the commit message is
> > probably no longer accurate. No big deal. :)
>
> Ok, Connie could you please include it in your next pull then please?
Sure, will do.
>
>
> Alex
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-03-11 12:32 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1489845274.730285.1361778940139.JavaMail.root@redhat.com>
[not found] ` <512B1C35.3040500@de.ibm.com>
[not found] ` <512B4073.6050100@redhat.com>
[not found] ` <512B46C3.4030805@de.ibm.com>
2013-03-08 20:11 ` [Qemu-devel] [PATCH 1/3] virtio-ccw: remove qdev_unparent in unplug routing Alexander Graf
2013-03-11 12:04 ` Cornelia Huck
2013-03-11 12:16 ` Paolo Bonzini
2013-03-11 12:22 ` Alexander Graf
2013-03-11 12:32 ` Cornelia Huck
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).