From d3da21d6562461bef3fcf0a9a40b84e6e2c0f80f Mon Sep 17 00:00:00 2001 From: Hu Tao Date: Fri, 11 Nov 2011 16:20:19 +0800 Subject: [PATCH] fix two bugs in bridge_driver.c steps to reproduce: 1. having a network xml file(named default.xml) like this one: default c5322c4c-81d0-4985-a363-ad6389780d89 in /etc/libvirt/qemu/networks/, and mark it as autostart: $ ls -l /etc/libvirt/qemu/networks/autostart total 0 lrwxrwxrwx 1 root root 14 Oct 12 14:02 default.xml -> ../default.xml 2. start libvirtd and the device virbr0 is not automatically up. The reason is that the function virNetDevExists is now returns 1 if the device exists, comparing to the former one returns 0 if the device exists. But with only this fix will cause a segmentation fault(the same steps as above) that is fixed by the second chunk of code. --- src/network/bridge_driver.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index a9e1252b94..258f7c76ff 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -213,7 +213,7 @@ networkFindActiveConfigs(struct network_driver *driver) { /* If bridge exists, then mark it active */ if (obj->def->bridge && - virNetDevExists(obj->def->bridge) == 0) { + virNetDevExists(obj->def->bridge) == 1) { obj->active = 1; /* Try and read dnsmasq/radvd pids if any */ @@ -1814,8 +1814,10 @@ networkStartNetworkVirtual(struct network_driver *driver, if (!save_err) save_err = virSaveLastError(); - ignore_value(virNetDevTapDelete(macTapIfName)); - VIR_FREE(macTapIfName); + if (macTapIfName) { + ignore_value(virNetDevTapDelete(macTapIfName)); + VIR_FREE(macTapIfName); + } err0: if (!save_err) -- GitLab