[libvirt] [PATCH] qemu: fix use a nonexist address in qemuDomainAttachDeviceConfig

Luyao Huang lhuang at redhat.com
Tue Dec 16 12:47:12 UTC 2014


On 12/16/2014 08:33 PM, Peter Krempa wrote:
> On 12/16/14 13:32, Luyao Huang wrote:
>> On 12/16/2014 08:00 PM, Peter Krempa wrote:
>>> On 12/15/14 10:10, Luyao Huang wrote:
>>>> We free them before, then use it. This make we always do
>>> We clear the pointer, not free.
>>>
>>>> virDomainDefAddImplicitControllers when attach a disk.
>>>>
>>>> Signed-off-by: Luyao Huang <lhuang at redhat.com>
>>>> ---
>>>>    src/qemu/qemu_driver.c | 2 +-
>>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>>>> index df3ba6d..a9afa5d 100644
>>>> --- a/src/qemu/qemu_driver.c
>>>> +++ b/src/qemu/qemu_driver.c
>>>> @@ -7223,10 +7223,10 @@ qemuDomainAttachDeviceConfig(virQEMUCapsPtr
>>>> qemuCaps,
>>>>            if (virDomainDiskInsert(vmdef, disk))
>>>>                return -1;
>>>>            /* vmdef has the pointer. Generic codes for vmdef will do
>>>> all jobs */
>>>> -        dev->data.disk = NULL;
>>> The comment even explains why the line is there. From that point on, the
>>> pointer is owned by 'vmdef' and thus the original needs to be cleared so
>>> that it isn't freed (and doulbe freed) later on.
>> Oh, i see. Thanks for your review and i found seems i don't check if gdb
>> is real go to virDomainDefAddImplicitControllers, just check the
>> pointer's value is optimized out.
>>
>> (gdb)
>> 7204            dev->data.disk = NULL;
>> (gdb)
>> 7205            if (disk->bus != VIR_DOMAIN_DISK_BUS_VIRTIO)
>> (gdb) p disk
>> $3 = <optimized out>
> "optimized out" means that GDB can't access the variable as it is stored
> in a register or for other reason caused by the code optimizer.
>
> It does not mean that the variable is cleared or whatever, just that GDB
> can't print it.
Got it, thanks in advance for your help.
I should be more carefully when i wrote the patch.
>
> Peter
>
Luyao




More information about the libvir-list mailing list