]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Don't set NVRAM label when creating it
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 9 Jun 2021 13:44:11 +0000 (15:44 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 17 Jun 2021 07:15:09 +0000 (09:15 +0200)
The NVRAM label is set in qemuSecuritySetAllLabel(). There's no
need to set its label upfront. In fact, setting it twice creates
an imbalance because it's unset only once which mangles seclabel
remembering. However, plain removal of the
qemuSecurityDomainSetPathLabel() undoes the fix for the original
bug (when dynamic ownership is off then the NVRAM is not created
with cfg->user and cfg->group but as root:root). Therefore, we
have to switch to virFileOpenAs() and pass cfg->user and
cfg->group and VIR_FILE_OPEN_FORCE_OWNER flag. There's no need to
pass VIR_FILE_OPEN_FORCE_MODE because the file will be created
with the proper mode.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1969347
Fixes: bcdaa91a27b5b2d103535270a6a287efe6cd8bfb
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
src/qemu/qemu_process.c

index c37687f249898845f4b9f30eca07255fcbbdeba0..2b03b0ab98b07d87c03527d4e8dc12e0ddf21a3e 100644 (file)
@@ -4538,16 +4538,19 @@ qemuPrepareNVRAM(virQEMUDriver *driver,
         goto cleanup;
     }
 
-    if ((dstFD = qemuDomainOpenFile(driver, vm, loader->nvram,
-                                    O_WRONLY | O_CREAT | O_EXCL,
-                                    NULL)) < 0)
+    if ((dstFD = virFileOpenAs(loader->nvram,
+                               O_WRONLY | O_CREAT | O_EXCL,
+                               S_IRUSR | S_IWUSR,
+                               cfg->user, cfg->group,
+                               VIR_FILE_OPEN_FORCE_OWNER)) < 0) {
+        virReportSystemError(-dstFD,
+                             _("Failed to create file '%s'"),
+                             loader->nvram);
         goto cleanup;
+    }
 
     created = true;
 
-    if (qemuSecurityDomainSetPathLabel(driver, vm, loader->nvram, false) < 0)
-        goto cleanup;
-
     do {
         char buf[1024];