5fccec3f3b
CVE-2019-10161: arbitrary file read/exec via virDomainSaveImageGetXMLDesc API (bz #1722463, bz #1720115) CVE-2019-10166: virDomainManagedSaveDefineXML API exposed to readonly clients (bz #1722462, bz #1720114) CVE-2019-10167: arbitrary command execution via virConnectGetDomainCapabilities API (bz #1722464, bz #1720117) CVE-2019-10168: arbitrary command execution via virConnectBaselineHypervisorCPU and virConnectCompareHypervisorCPU APIs (bz #1722466, bz #1720118) CVE-2019-3886: virsh domhostname command discloses guest hostname in readonly mode [fedora-rawhide Cannot start VM with a CBR 2.0 TPM device (bz #1712556) libvirtd does not update VM .xml configurations after virsh snapshot/blockcommit (bz #1722348)
52 lines
1.7 KiB
Diff
52 lines
1.7 KiB
Diff
From: Jiri Denemark <jdenemar@redhat.com>
|
|
Date: Fri, 5 Apr 2019 11:33:32 +0200
|
|
Subject: [PATCH] cpu_x86: Do not cache microcode version
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
The microcode version checks are used to invalidate cached CPU data we
|
|
get from QEMU. To minimize /proc/cpuinfo parsing the microcode version
|
|
was only read when libvirtd started and cached for the daemon's
|
|
lifetime. However, the CPU microcode can change anytime (updating the
|
|
microcode package can automatically upload it to the CPU) and we need to
|
|
stop caching it to avoid using stale CPU model data.
|
|
|
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
(cherry picked from commit be46f613261d3b655a1f15afd635087e68a9c39b)
|
|
---
|
|
src/cpu/cpu_x86.c | 5 +----
|
|
1 file changed, 1 insertion(+), 4 deletions(-)
|
|
|
|
diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
|
|
index d3a88da21d..470de83a87 100644
|
|
--- a/src/cpu/cpu_x86.c
|
|
+++ b/src/cpu/cpu_x86.c
|
|
@@ -165,7 +165,6 @@ struct _virCPUx86Map {
|
|
};
|
|
|
|
static virCPUx86MapPtr cpuMap;
|
|
-static unsigned int microcodeVersion;
|
|
|
|
int virCPUx86DriverOnceInit(void);
|
|
VIR_ONCE_GLOBAL_INIT(virCPUx86Driver);
|
|
@@ -1332,8 +1331,6 @@ virCPUx86DriverOnceInit(void)
|
|
if (!(cpuMap = virCPUx86LoadMap()))
|
|
return -1;
|
|
|
|
- microcodeVersion = virHostCPUGetMicrocodeVersion();
|
|
-
|
|
return 0;
|
|
}
|
|
|
|
@@ -2373,7 +2370,7 @@ virCPUx86GetHost(virCPUDefPtr cpu,
|
|
goto cleanup;
|
|
|
|
ret = x86DecodeCPUData(cpu, cpuData, models);
|
|
- cpu->microcodeVersion = microcodeVersion;
|
|
+ cpu->microcodeVersion = virHostCPUGetMicrocodeVersion();
|
|
|
|
cleanup:
|
|
virCPUx86DataFree(cpuData);
|