]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Discard requires-smm firmware when loader.secure=no
authorAndrea Bolognani <abologna@redhat.com>
Thu, 16 Mar 2023 18:42:56 +0000 (19:42 +0100)
committerAndrea Bolognani <abologna@redhat.com>
Wed, 22 Mar 2023 12:49:53 +0000 (13:49 +0100)
The requires-smm feature being present in a firmware descriptor
causes loader.secure=yes to be automatically chosen for the
domain, so we have to avoid this situation or the user's choice
will be silently subverted.

Note that we can't actually encounter loader.secure=no in this
function at the moment because of earlier checks, but that's
going to change soon.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_firmware.c

index 6dca8fab5f4e970e887a05d72bde67576aa3b8eb..1b0f4bc299b1465f4dde175cf964a92034751712 100644 (file)
@@ -1196,6 +1196,11 @@ qemuFirmwareMatchDomain(const virDomainDef *def,
                       "but firmware '%s' requires it to be enabled", path);
             return false;
         }
+        if (loader && loader->secure == VIR_TRISTATE_BOOL_NO) {
+            VIR_DEBUG("Domain doesn't restrict pflash programming to SMM, "
+                      "but firmware '%s' requires use of SMM", path);
+            return false;
+        }
     } else {
         if (loader && loader->secure == VIR_TRISTATE_BOOL_YES) {
             VIR_DEBUG("Domain restricts pflash programming to SMM, "