[libvirt] Bug fixing of libvirt -- attach-interface using xen driver

Dear: I think there was a bug, when attach-interface using xen driver. when I use xen driver to attach interface for domain, the libvirtd will crash. the info with GDB: #0 0x00007ffff7571815 in virDomainDiskGetDriver () from /usr/lib/libvirt.so.0 #1 0x00007fffeb9ad471 in ?? () from /usr/lib/libvirt/connection-driver/libvirt_driver_xen.so #2 0x00007fffeb9b1062 in xenDaemonAttachDeviceFlags () from /usr/lib/libvirt/connection-driver/libvirt_driver_xen.so #3 0x00007fffeb9a8a86 in ?? () from /usr/lib/libvirt/connection-driver/libvirt_driver_xen.so #4 0x00007ffff7609266 in virDomainAttachDevice () from /usr/lib/libvirt.so.0 #5 0x0000555555593c9d in ?? () #6 0x00007ffff76743c9 in virNetServerProgramDispatch () from /usr/lib/libvirt.so.0 #7 0x00005555555a678d in ?? () #8 0x00007ffff755460e in ?? () from /usr/lib/libvirt.so.0 #9 0x00007ffff7553b06 in ?? () from /usr/lib/libvirt.so.0 #10 0x00007ffff4998b50 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #11 0x00007ffff46e30ed in clone () from /lib/x86_64-linux-gnu/libc.so.6 #12 0x0000000000000000 in ?? () And I think the bug is at the function virDomainXMLDevID(), file path: src/xen/xend_internal.c -------------------------------------------------- static int virDomainXMLDevID(virConnectPtr conn, virDomainDefPtr def, virDomainDeviceDefPtr dev, char *class, char *ref, int ref_len) { xenUnifiedPrivatePtr priv = conn->privateData; char *xref; char *tmp; const char *driver = virDomainDiskGetDriver(dev->data.disk); if (dev->type == VIR_DOMAIN_DEVICE_DISK) { if (STREQ_NULLABLE(driver, "tap") || STREQ_NULLABLE(driver, "tap2")) strcpy(class, driver); else strcpy(class, "vbd"); ----------------------------------------------------------------- the follow line: const char *driver = virDomainDiskGetDriver(dev->data.disk); if the dev->data.disk not initialize before, the libvirt will crash. And I changed it like this : -------------------------------------------------------------- static int virDomainXMLDevID(virConnectPtr conn, virDomainDefPtr def, virDomainDeviceDefPtr dev, char *class, char *ref, int ref_len) { xenUnifiedPrivatePtr priv = conn->privateData; char *xref; char *tmp; if (dev->type == VIR_DOMAIN_DEVICE_DISK) { const char *driver = virDomainDiskGetDriver(dev->data.disk); if (STREQ_NULLABLE(driver, "tap") || STREQ_NULLABLE(driver, "tap2")) strcpy(class, driver); else strcpy(class, "vbd"); ------------------------------------------------------------- It works fine Would some confirm and fix it? Xiaolin.Su

On 30.01.2015 10:20, linxxnil wrote:
Dear:
I think there was a bug, when attach-interface using xen driver.
You're right. I've proposed a patch: https://www.redhat.com/archives/libvir-list/2015-January/msg01088.html Michal
participants (2)
-
linxxnil
-
Michal Privoznik