]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
virt: if we detect Xen by DMI, trust that over CPUID
authorLennart Poettering <lennart@poettering.net>
Mon, 30 Apr 2018 10:23:03 +0000 (12:23 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 30 Apr 2018 10:32:25 +0000 (12:32 +0200)
Apparently Xen sometimes lies about its identity when queried via CPUID.
Let's hence prefer DMI tests for CPUID

Fixes: #8844
src/basic/virt.c

index e5b7ec3206c34f5b2e0a7ca876aefd518352c374..c1fd2f6d5ccf33a5359b1d802c57789011462bd8 100644 (file)
@@ -319,13 +319,16 @@ int detect_vm(void) {
 
         /* We have to use the correct order here:
          *
-         * -> First try to detect Oracle Virtualbox, even if it uses KVM.
-         * -> Second try to detect from cpuid, this will report KVM for
-         *    whatever software is used even if info in dmi is overwritten.
-         * -> Third try to detect from dmi. */
+         * → First, try to detect Oracle Virtualbox, even if it uses KVM, as well as Xen even if it cloaks as Microsoft
+         *   Hyper-V.
+         *
+         * → Second, try to detect from CPUID, this will report KVM for whatever software is used even if info in DMI is
+         *   overwritten.
+         *
+         * → Third, try to detect from DMI. */
 
         dmi = detect_vm_dmi();
-        if (dmi == VIRTUALIZATION_ORACLE) {
+        if (IN_SET(dmi, VIRTUALIZATION_ORACLE, VIRTUALIZATION_XEN)) {
                 r = dmi;
                 goto finish;
         }