]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
storage: fix scsi detach regression with cgroup ACLs
authorEric Blake <eblake@redhat.com>
Tue, 27 Nov 2012 13:55:00 +0000 (06:55 -0700)
committerEric Blake <eblake@redhat.com>
Fri, 30 Nov 2012 15:26:34 +0000 (08:26 -0700)
https://bugzilla.redhat.com/show_bug.cgi?id=876828

Commit 38c4a9cc introduced a regression in hot unplugging of disks
from qemu, where cgroup device ACLs were no longer being revoked
(thankfully not a security hole: cgroup ACLs only prevent open()
of the disk; so reverting the ACL prevents future abuse but doesn't
stop abuse from an fd that was already opened before the ACL change).

Commit 1b2ebf95 overlooked that there were two spots affected.

* src/qemu/qemu_hotplug.c (qemuDomainDetachDiskDevice):
Transfer backing chain before deletion.
* src/qemu/qemu_driver.c (qemuDomainDetachDeviceDiskLive): Fix
spacing (partly to ensure a different-looking patch).

src/qemu/qemu_driver.c
src/qemu/qemu_hotplug.c

index c37bdb91fee3c69f6f5bf221291556d5140dbb88..ae98dbfbe5f74dcbf28adc6c72e37e7faae38872 100644 (file)
@@ -6070,7 +6070,7 @@ qemuDomainDetachDeviceDiskLive(virQEMUDriverPtr driver,
         if (disk->bus == VIR_DOMAIN_DISK_BUS_VIRTIO)
             ret = qemuDomainDetachPciDiskDevice(driver, vm, dev);
         else if (disk->bus == VIR_DOMAIN_DISK_BUS_SCSI)
-            ret =  qemuDomainDetachDiskDevice(driver, vm, dev);
+            ret = qemuDomainDetachDiskDevice(driver, vm, dev);
         else if (dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_USB)
             ret = qemuDomainDetachDiskDevice(driver, vm, dev);
         else
index cfeae689ff76149967e70840c3270334a1297dc2..2d4a822416cb7da2cafbb0fdbc9230173116775f 100644 (file)
@@ -2091,6 +2091,8 @@ int qemuDomainDetachDiskDevice(virQEMUDriverPtr driver,
 
     virDomainDiskRemove(vm->def, i);
 
+    dev->data.disk->backingChain = detach->backingChain;
+    detach->backingChain = NULL;
     virDomainDiskDefFree(detach);
 
     if (virSecurityManagerRestoreImageLabel(driver->securityManager,