On 10.06.2011 13:03, Stefano Stabellini wrote:
> On Fri, 10 Jun 2011, Marek Marczykowski wrote:
>> On 10.06.2011 12:44, Stefano Stabellini wrote:
>>> On Fri, 10 Jun 2011, Marek Marczykowski wrote:
>>>> # HG changeset patch
>>>> # User Marek Marczykowski <marmarek@xxxxxxxxxxxx>
>>>> # Date 1307662302 -7200
>>>> # Node ID 88f67b423c89f4bd604837b9eae2483dad5ebb0d
>>>> # Parent 4b392511ae0840fba66c40aa2788dc1ff402b6e8
>>>> libxl: do not try to detach pci device when none attached
>>>>
>>>> Fixes SEGV on domain destroy
>>>>
>>>> Signed-off-by: Marek Marczykowski <marmarek@xxxxxxxxxxxx>
>>>>
>>>> diff --git a/tools/libxl/libxl_pci.c b/tools/libxl/libxl_pci.c
>>>> --- a/tools/libxl/libxl_pci.c
>>>> +++ b/tools/libxl/libxl_pci.c
>>>> @@ -1039,6 +1039,8 @@ int libxl_device_pci_shutdown(libxl_ctx
>>>> rc = libxl_device_pci_list_assigned(ctx, &pcidevs, domid, &num);
>>>> if ( rc )
>>>> return rc;
>>>> + if ( num == 0 )
>>>> + return 0;
>>>> for (i = 0; i < num; i++) {
>>>> /* Force remove on shutdown since, on HVM, qemu will not always
>>>> * respond to SCI interrupt because the guest kernel has shut
>>>> down the
>>>
>>> Is the problem here that num is 0 and pcidevs is uninitialized?
>>> If so, would this patch solve the problem you are seeing?
>>
>> No, when there is no PCI devs, libxl_device_pci_list_assigned exists
>> earlier - before allocating memory for pcidevs.
>
> Sorry, but I still don't understand.
>
> If num is 0, it won't enter the following loop anyway, the only
> other operation in libxl_device_pci_shutdown is free(pcidevs) and
> pcidevs should be NULL so nothing bad should happen.
Ah, ok. So your patch should also works.
--
Pozdrawiam / Best Regards,
Marek Marczykowski | RLU #390519
marmarek at mimuw edu pl | xmpp:marmarek at staszic waw pl
smime.p7s
Description: S/MIME Cryptographic Signature
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|