[libvirt] [PATCH] 528575 avoid libvirtd crash on LCX domain autostart
Daniel Veillard
veillard at redhat.com
Wed Oct 21 11:36:37 UTC 2009
On Wed, Oct 21, 2009 at 07:31:11PM +0900, Ryota Ozaki wrote:
> On Wed, Oct 21, 2009 at 6:55 PM, Daniel P. Berrange <berrange at redhat.com> wrote:
> > On Wed, Oct 21, 2009 at 11:52:42AM +0200, Daniel Veillard wrote:
> >> https://bugzilla.redhat.com/show_bug.cgi?id=528575
> >>
> >> virsh -c lxc:/// autostart vm1
> >>
> >> crash the daemon because the driver autostartDir is never initialized
> >> and we do a NULL dereference. The enclosed patch is trivial and avoid
> >> the crash, but ...
> >>
> >> [root at paphio ~]# virsh -c lxc:/// dominfo vm1
> >> Id: -
> >> Name: vm1
> >> UUID: d320f760-7541-6633-fd42-4f984fca9f51
> >> OS Type: exe
> >> State: shut off
> >> CPU(s): 1
> >> Max memory: 500000 kB
> >> Used memory: 500000 kB
> >> Autostart: enable
> >>
> >> while the domain is properly flagged as autostarting it doesn't seem to
> >> actually autostart, and the driver->autostartDir directory is not
> >> created on the fly as I would expect, i.e.
> >> /etc/libvirt/lxc/autostart/
> >> still doesn't exist and the domain is marked as off and Autostart: enable
> >
> > That's because of :
> >
> >> diff --git a/src/lxc/lxc_conf.h b/src/lxc/lxc_conf.h
> >> index 6e4c855..eca8c7c 100644
> >> --- a/src/lxc/lxc_conf.h
> >> +++ b/src/lxc/lxc_conf.h
> >> @@ -36,6 +36,7 @@
> >> #define LXC_CONFIG_DIR SYSCONF_DIR "/libvirt/lxc"
> >> #define LXC_STATE_DIR LOCAL_STATE_DIR "/run/libvirt/lxc"
> >> #define LXC_LOG_DIR LOCAL_STATE_DIR "/log/libvirt/lxc"
> >> +#define LXC_AUTOSTART_DIR LOCAL_STATE_DIR "/libvirt/lxc/autostart"
> >
> > LOCAL_STATE_DIR expands to /var
Dohhh
> > The autostart dir should be defined as
> >
> > #define LXC_AUTOSTART_DIR LXC_CONFIG_DIR "/autostart"
and I had the process under gdb, I didn't even looked at the value :-\
> Yes, that's correct. I've confirmed it fixes the defect in my environment.
> So ACK to the revised one.
>
> BTW, actually I've never used autostart feature though, when autostart-enabled
> domains boot up? 'service libvirtd restart' seems not kicking my lxc...
Thanks a lot for the quick feedback, enclosed patch applied !
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
-------------- next part --------------
commit 09c64d0072857922aabff90392b3334aa2d1fde5
Author: Daniel Veillard <veillard at redhat.com>
Date: Wed Oct 21 13:32:20 2009 +0200
528575 avoid libvirtd crash on LCX domain autostart
https://bugzilla.redhat.com/show_bug.cgi?id=528575
virsh -c lxc:/// autostart vm1
was crashing the daemon
* src/lxc/lxc_conf.h src/lxc/lxc_conf.c: initialize the driver
autostartDir to avoid a NULL reference and implement autostart for LXC
diff --git a/src/lxc/lxc_conf.c b/src/lxc/lxc_conf.c
index de059bd..74dc367 100644
--- a/src/lxc/lxc_conf.c
+++ b/src/lxc/lxc_conf.c
@@ -102,6 +102,9 @@ int lxcLoadDriverConfig(lxc_driver_t *driver)
goto no_memory;
if ((driver->logDir = strdup(LXC_LOG_DIR)) == NULL)
goto no_memory;
+ if ((driver->autostartDir = strdup(LXC_AUTOSTART_DIR)) == NULL)
+ goto no_memory;
+
if ((filename = strdup(SYSCONF_DIR "/libvirt/lxc.conf")) == NULL)
goto no_memory;
diff --git a/src/lxc/lxc_conf.h b/src/lxc/lxc_conf.h
index 6e4c855..499617f 100644
--- a/src/lxc/lxc_conf.h
+++ b/src/lxc/lxc_conf.h
@@ -36,6 +36,7 @@
#define LXC_CONFIG_DIR SYSCONF_DIR "/libvirt/lxc"
#define LXC_STATE_DIR LOCAL_STATE_DIR "/run/libvirt/lxc"
#define LXC_LOG_DIR LOCAL_STATE_DIR "/log/libvirt/lxc"
+#define LXC_AUTOSTART_DIR LXC_CONFIG_DIR "/autostart"
typedef struct __lxc_driver lxc_driver_t;
struct __lxc_driver {
More information about the libvir-list
mailing list