[fedora-virt-maint] rpms/libvirt/devel libvirt-fix-permissions-problem-starting-qemu.patch, NONE, 1.1 libvirt.spec, 1.160, 1.161

Mark McLoughlin markmc at fedoraproject.org
Thu Jul 30 17:02:51 UTC 2009


Author: markmc

Update of /cvs/pkgs/rpms/libvirt/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv21444

Modified Files:
	libvirt.spec 
Added Files:
	libvirt-fix-permissions-problem-starting-qemu.patch 
Log Message:
* Thu Jul 30 2009 Mark McLoughlin <markmc at redhat.com> - 0.7.0-0.8.gite195b43
- Add patch from upstream to fix qemu pidfile perms problem


libvirt-fix-permissions-problem-starting-qemu.patch:
 qemu_driver.c |    2 +-
 util.c        |   15 +++++++++------
 2 files changed, 10 insertions(+), 7 deletions(-)

--- NEW FILE libvirt-fix-permissions-problem-starting-qemu.patch ---
From: "Daniel P. Berrange" <berrange at redhat.com>
Subject: PATCH: Fix permissions problem starting QEMU

There is a minor bug when running QEMU non-root, and having
capng enabled. libvirt is unable to write the PID file in
/var/run/libvirt/qemu, since its now owned by 'qemu', but
libvirtd has dropped all capabilties at this point. The fix
is to delay dropping capabilities until after the PID file
has been created. We should also be sure to kill the child
if writing the PID file fails

* src/util.c: Don't drop capabilities until after the PID file has
  been written. Kill off child if writing the PID file fails

* src/qemu_driver.c: Remove bogus trailing '/' in state dir

diff --git a/src/qemu_driver.c b/src/qemu_driver.c
index 9fb8506..26897d3 100644
--- a/src/qemu_driver.c
+++ b/src/qemu_driver.c
@@ -468,7 +468,7 @@ qemudStartup(int privileged) {
             goto out_of_memory;
 
         if (virAsprintf(&qemu_driver->stateDir,
-                      "%s/run/libvirt/qemu/", LOCAL_STATE_DIR) == -1)
+                      "%s/run/libvirt/qemu", LOCAL_STATE_DIR) == -1)
             goto out_of_memory;
     } else {
         uid_t uid = geteuid();
diff --git a/src/util.c b/src/util.c
index ee64b28..39aae24 100644
--- a/src/util.c
+++ b/src/util.c
@@ -513,12 +513,6 @@ __virExec(virConnectPtr conn,
         if ((hook)(data) != 0)
             _exit(1);
 
-    /* The hook above may need todo something privileged, so
-     * we delay clearing capabilities until now */
-    if ((flags & VIR_EXEC_CLEAR_CAPS) &&
-        virClearCapabilities() < 0)
-        _exit(1);
-
     /* Daemonize as late as possible, so the parent process can detect
      * the above errors with wait* */
     if (flags & VIR_EXEC_DAEMON) {
@@ -543,6 +537,9 @@ __virExec(virConnectPtr conn,
 
         if (pid > 0) {
             if (pidfile && virFileWritePidPath(pidfile,pid)) {
+                kill(pid, SIGTERM);
+                usleep(500*1000);
+                kill(pid, SIGTERM);
                 virReportSystemError(conn, errno,
                                      "%s", _("could not write pidfile"));
                 _exit(1);
@@ -551,6 +548,12 @@ __virExec(virConnectPtr conn,
         }
     }
 
+    /* The steps above may need todo something privileged, so
+     * we delay clearing capabilities until the last minute */
+    if ((flags & VIR_EXEC_CLEAR_CAPS) &&
+        virClearCapabilities() < 0)
+        _exit(1);
+
     if (envp)
         execve(argv[0], (char **) argv, (char**)envp);
     else




Index: libvirt.spec
===================================================================
RCS file: /cvs/pkgs/rpms/libvirt/devel/libvirt.spec,v
retrieving revision 1.160
retrieving revision 1.161
diff -u -p -r1.160 -r1.161
--- libvirt.spec	30 Jul 2009 11:07:16 -0000	1.160
+++ libvirt.spec	30 Jul 2009 17:02:51 -0000	1.161
@@ -78,11 +78,14 @@
 Summary: Library providing a simple API virtualization
 Name: libvirt
 Version: 0.7.0
-Release: 0.7.gite195b43%{?dist}%{?extra_release}
+Release: 0.8.gite195b43%{?dist}%{?extra_release}
 License: LGPLv2+
 Group: Development/Libraries
 Source: libvirt-0.7.0-0.6.gite195b43.tar.gz
 
+# Should be in 0.7.0
+Patch01: libvirt-fix-permissions-problem-starting-qemu.patch
+
 # Temporary hack till PulseAudio autostart problems are sorted
 # out when SELinux enforcing (bz 486112)
 Patch200: libvirt-0.6.4-svirt-sound.patch
@@ -252,6 +255,8 @@ of recent versions of Linux (and other O
 %prep
 %setup -q
 
+%patch01 -p1
+
 %patch200 -p0
 
 %build
@@ -612,6 +617,9 @@ fi
 %endif
 
 %changelog
+* Thu Jul 30 2009 Mark McLoughlin <markmc at redhat.com> - 0.7.0-0.8.gite195b43
+- Add patch from upstream to fix qemu pidfile perms problem
+
 * Thu Jul 30 2009 Daniel P. Berrange <berrange at redhat.com> - 0.7.0-0.7.gite195b43
 - Create qemu/kvm user & group to fix upgrades
 




More information about the Fedora-virt-maint mailing list