]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: cgroup: Don't use NULL path on default backed RNGs
authorPeter Krempa <pkrempa@redhat.com>
Thu, 24 Jul 2014 13:47:39 +0000 (15:47 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 25 Jul 2014 07:34:53 +0000 (09:34 +0200)
The "random" backend for virtio-rng can be started with no path
specified which equals to /dev/random. The cgroup code didn't consider
this and called few of the functions with NULL resulting into:

 $ virsh start rng-vm
 error: Failed to start domain rng-vm
 error: Path '(null)' is not accessible: Bad address

Problem introduced by commit c6320d34637a9883e31c4081d418fc33a4277cf2

src/qemu/qemu_cgroup.c

index 795ad906f70ab9972d9f86fc3e807bc69029159b..f649d663234efde31fb33d2b079ce9571da23a5c 100644 (file)
@@ -587,10 +587,16 @@ qemuSetupDevicesCgroup(virQEMUDriverPtr driver,
     if (vm->def->rng &&
         (vm->def->rng->backend == VIR_DOMAIN_RNG_BACKEND_RANDOM)) {
         VIR_DEBUG("Setting Cgroup ACL for RNG device");
-        rv = virCgroupAllowDevicePath(priv->cgroup, vm->def->rng->source.file,
+        const char *rngpath = vm->def->rng->source.file;
+
+        /* fix path when using the default */
+        if (!rngpath)
+            rngpath = "/dev/random";
+
+        rv = virCgroupAllowDevicePath(priv->cgroup, rngpath,
                                       VIR_CGROUP_DEVICE_RW);
         virDomainAuditCgroupPath(vm, priv->cgroup, "allow",
-                                 vm->def->rng->source.file, "rw", rv == 0);
+                                 rngpath, "rw", rv == 0);
         if (rv < 0 &&
             !virLastErrorIsSystemErrno(ENOENT))
             goto cleanup;