if (qemuDomainGetHostdevPath(dev, &path, &perms) < 0)
return -1;
- VIR_DEBUG("Cgroup allow %s perms=%d", path, perms);
- rv = virCgroupAllowDevicePath(priv->cgroup, path, perms, false);
- virDomainAuditCgroupPath(vm, priv->cgroup, "allow", path,
- virCgroupGetDevicePermsString(perms),
- rv);
- if (rv < 0)
- return -1;
+ if (path) {
+ VIR_DEBUG("Cgroup allow %s perms=%d", path, perms);
+ rv = virCgroupAllowDevicePath(priv->cgroup, path, perms, false);
+ virDomainAuditCgroupPath(vm, priv->cgroup, "allow", path,
+ virCgroupGetDevicePermsString(perms),
+ rv);
+ if (rv < 0)
+ return -1;
+ }
if (qemuHostdevNeedsVFIO(dev)) {
VIR_DEBUG("Cgroup allow %s perms=%d", QEMU_DEV_VFIO, VIR_CGROUP_DEVICE_RW);
if (qemuDomainGetHostdevPath(dev, &path, NULL) < 0)
return -1;
- VIR_DEBUG("Cgroup deny %s", path);
- rv = virCgroupDenyDevicePath(priv->cgroup, path,
- VIR_CGROUP_DEVICE_RWM, false);
- virDomainAuditCgroupPath(vm, priv->cgroup,
- "deny", path, "rwm", rv);
- if (rv < 0)
- return -1;
+ if (path) {
+ VIR_DEBUG("Cgroup deny %s", path);
+ rv = virCgroupDenyDevicePath(priv->cgroup, path,
+ VIR_CGROUP_DEVICE_RWM, false);
+ virDomainAuditCgroupPath(vm, priv->cgroup,
+ "deny", path, "rwm", rv);
+ if (rv < 0)
+ return -1;
+ }
if (qemuHostdevNeedsVFIO(dev) &&
!qemuDomainNeedsVFIO(vm->def)) {
*
* For given device @dev fetch its host path and store it at
* @path. Optionally, caller can get @perms on the path (e.g.
- * rw/ro).
+ * rw/ro). When called on a missing device, the function will return success
+ * and store NULL at @path.
*
* The caller is responsible for freeing the @path when no longer
* needed.
if (qemuDomainGetHostdevPath(dev, &path, NULL) < 0)
return -1;
- if (qemuDomainCreateDevice(path, data, false) < 0)
+ if (path && qemuDomainCreateDevice(path, data, false) < 0)
return -1;
if (qemuHostdevNeedsVFIO(dev) &&
if (qemuDomainGetHostdevPath(hostdev, &path, NULL) < 0)
return -1;
- if (qemuDomainNamespaceMknodPath(vm, path) < 0)
+ if (path && qemuDomainNamespaceMknodPath(vm, path) < 0)
return -1;
if (qemuHostdevNeedsVFIO(hostdev) &&
if (qemuDomainGetHostdevPath(hostdev, &path, NULL) < 0)
return -1;
- if (qemuDomainNamespaceUnlinkPath(vm, path) < 0)
+ if (path && qemuDomainNamespaceUnlinkPath(vm, path) < 0)
return -1;
if (qemuHostdevNeedsVFIO(hostdev) &&