[fedora-virt-maint] rpms/libvirt/devel libvirt-0.7.0-chown-kernel-initrd-before-spawning-qemu.patch, NONE, 1.1 libvirt.spec, 1.163, 1.164

Mark McLoughlin markmc at fedoraproject.org
Thu Aug 6 15:01:50 UTC 2009


Author: markmc

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

Modified Files:
	libvirt.spec 
Added Files:
	libvirt-0.7.0-chown-kernel-initrd-before-spawning-qemu.patch 
Log Message:
* Thu Aug  6 2009 Mark McLoughlin <markmc at redhat.com> - 0.7.0-2
- Make sure qemu can access kernel/initrd (bug #516034)
- Set perms on /var/lib/libvirt/boot to 0711 (bug #516034)


libvirt-0.7.0-chown-kernel-initrd-before-spawning-qemu.patch:
 qemu_driver.c |   21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

--- NEW FILE libvirt-0.7.0-chown-kernel-initrd-before-spawning-qemu.patch ---
From: Mark McLoughlin <markmc at redhat.com>
Subject: [PATCH] chown kernel/initrd before spawning qemu

If we're running qemu unprivileged, we need to chown any supplied kernel
or initrd before spawning it.

* src/qemu_driver.c: rename qemuDomainSetDiskOwnership() to
  qemuDomainSetFileOwnership(), pass it a path string instead of a disk
  definition and use it for chowning the kernel/initrd in
  qemuDomainSetAllDeviceOwnership()
---
 src/qemu_driver.c |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/qemu_driver.c b/src/qemu_driver.c
index 412b68d..bd58435 100644
--- a/src/qemu_driver.c
+++ b/src/qemu_driver.c
@@ -1684,18 +1684,18 @@ static int qemuDomainSetHostdevOwnership(virConnectPtr conn,
 
 }
 
-static int qemuDomainSetDiskOwnership(virConnectPtr conn,
-                                      virDomainDiskDefPtr def,
+static int qemuDomainSetFileOwnership(virConnectPtr conn,
+                                      const char *path,
                                       uid_t uid, gid_t gid)
 {
 
-    if (!def->src)
+    if (!path)
         return 0;
 
-    VIR_DEBUG("Setting ownership on %s to %d:%d", def->src, uid, gid);
-    if (chown(def->src, uid, gid) < 0) {
+    VIR_DEBUG("Setting ownership on %s to %d:%d", path, uid, gid);
+    if (chown(path, uid, gid) < 0) {
         virReportSystemError(conn, errno, _("cannot set ownership on %s"),
-                             def->src);
+                             path);
         return -1;
     }
     return 0;
@@ -1725,7 +1725,7 @@ static int qemuDomainSetDeviceOwnership(virConnectPtr conn,
             (def->data.disk->readonly || def->data.disk->shared))
             return 0;
 
-        return qemuDomainSetDiskOwnership(conn, def->data.disk, uid, gid);
+        return qemuDomainSetFileOwnership(conn, def->data.disk->src, uid, gid);
 
     case VIR_DOMAIN_DEVICE_HOSTDEV:
         return qemuDomainSetHostdevOwnership(conn, def->data.hostdev, uid, gid);
@@ -1753,12 +1753,16 @@ static int qemuDomainSetAllDeviceOwnership(virConnectPtr conn,
     uid = restore ? 0 : driver->user;
     gid = restore ? 0 : driver->group;
 
+    if (qemuDomainSetFileOwnership(conn, def->os.kernel, uid, gid) < 0 ||
+        qemuDomainSetFileOwnership(conn, def->os.initrd, uid, gid) < 0)
+        return -1;
+
     for (i = 0 ; i < def->ndisks ; i++) {
         if (restore &&
             (def->disks[i]->readonly || def->disks[i]->shared))
             continue;
 
-        if (qemuDomainSetDiskOwnership(conn, def->disks[i], uid, gid) < 0)
+        if (qemuDomainSetFileOwnership(conn, def->disks[i]->src, uid, gid) < 0)
             return -1;
     }
 
-- 
1.6.2.5



Index: libvirt.spec
===================================================================
RCS file: /cvs/pkgs/rpms/libvirt/devel/libvirt.spec,v
retrieving revision 1.163
retrieving revision 1.164
diff -u -p -r1.163 -r1.164
--- libvirt.spec	5 Aug 2009 15:24:45 -0000	1.163
+++ libvirt.spec	6 Aug 2009 15:01:49 -0000	1.164
@@ -78,11 +78,14 @@
 Summary: Library providing a simple API virtualization
 Name: libvirt
 Version: 0.7.0
-Release: 1%{?dist}%{?extra_release}
+Release: 2%{?dist}%{?extra_release}
 License: LGPLv2+
 Group: Development/Libraries
 Source: libvirt-%{version}.tar.gz
 
+# Make sure qemu can access kernel/initrd (bug #516034)
+Patch01: libvirt-0.7.0-chown-kernel-initrd-before-spawning-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
@@ -497,7 +502,7 @@ fi
 
 %dir %{_localstatedir}/lib/libvirt/
 %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/images/
-%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/boot/
+%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/boot/
 %dir %attr(0700, root, root) %{_localstatedir}/cache/libvirt/
 
 %if %{with_qemu}
@@ -612,7 +617,11 @@ fi
 %endif
 
 %changelog
-* Wed Aug  5 2009 Daniel Veillard <veillard at redhat.com> - 0.7.0-1.fc12
+* Thu Aug  6 2009 Mark McLoughlin <markmc at redhat.com> - 0.7.0-2
+- Make sure qemu can access kernel/initrd (bug #516034)
+- Set perms on /var/lib/libvirt/boot to 0711 (bug #516034)
+
+* Wed Aug  5 2009 Daniel Veillard <veillard at redhat.com> - 0.7.0-1
 - Upstream release of 0.7.0
 - ESX, VBox3, Power Hypervisor drivers
 - new net filesystem glusterfs




More information about the Fedora-virt-maint mailing list