From 5f67253813635dd7bbf5ea75073e6a8ec1086cca Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Fri, 16 Oct 2009 11:29:01 +0100 Subject: [PATCH] Fix initialization order bugs virInitialize must be the first libvirt function called to ensure threads, error handling & random number generator are all setup. Move UNIX socket directory permissions change to place of use --- daemon/libvirtd.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c index 6abb62ca48..c5f90b5266 100644 --- a/daemon/libvirtd.c +++ b/daemon/libvirtd.c @@ -700,9 +700,15 @@ static int qemudInitPaths(struct qemud_server *server, int ret = -1; char *sock_dir_prefix = NULL; - if (unix_sock_dir) + if (unix_sock_dir) { sock_dir = unix_sock_dir; - else { + /* Change the group ownership of /var/run/libvirt to unix_sock_gid */ + if (server->privileged) { + if (chown(unix_sock_dir, -1, unix_sock_gid) < 0) + VIR_ERROR(_("Failed to change group ownership of %s"), + unix_sock_dir); + } + } else { sock_dir = sockname; if (server->privileged) { dir_prefix = strdup (LOCAL_STATE_DIR); @@ -797,8 +803,6 @@ static struct qemud_server *qemudInitialize(int sigread) { return NULL; } - virInitialize(); - /* * Note that the order is important: the first ones have a higher * priority when calling virStateInitialize. We must register @@ -2847,6 +2851,8 @@ int main(int argc, char **argv) { {0, 0, 0, 0} }; + virInitialize(); + while (1) { int optidx = 0; int c; @@ -2989,13 +2995,6 @@ int main(int argc, char **argv) { if (remoteReadConfigFile (server, remote_config_file) < 0) goto error2; - /* Change the group ownership of /var/run/libvirt to unix_sock_gid */ - if (unix_sock_dir && server->privileged) { - if (chown(unix_sock_dir, -1, unix_sock_gid) < 0) - VIR_ERROR(_("Failed to change group ownership of %s"), - unix_sock_dir); - } - if (virEventAddHandleImpl(sigpipe[0], VIR_EVENT_HANDLE_READABLE, qemudDispatchSignalEvent, -- GitLab