34 lines
1.2 KiB
Diff
34 lines
1.2 KiB
Diff
|
# Commit 8752ad83e79754f8109457cff796e5f86f644348
|
||
|
# Date 2024-09-24 18:57:38 +0100
|
||
|
# Author Demi Marie Obenour <demi@invisiblethingslab.com>
|
||
|
# Committer Andrew Cooper <andrew.cooper3@citrix.com>
|
||
|
xen/ucode: Make Intel's microcode_sanity_check() stricter
|
||
|
|
||
|
The SDM states that data size must be a multiple of 4, but Xen doesn't check
|
||
|
this propery.
|
||
|
|
||
|
This is liable to cause a later failures, but should be checked explicitly.
|
||
|
|
||
|
Signed-off-by: Demi Marie Obenour <demi@invisiblethingslab.com>
|
||
|
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
|
||
|
Reviewed-by: Jan Beulich <jbeulich@suse.com>
|
||
|
|
||
|
--- a/xen/arch/x86/cpu/microcode/intel.c
|
||
|
+++ b/xen/arch/x86/cpu/microcode/intel.c
|
||
|
@@ -155,10 +155,13 @@ static int microcode_sanity_check(const
|
||
|
uint32_t sum;
|
||
|
|
||
|
/*
|
||
|
- * Total size must be a multiple of 1024 bytes. Data size and the header
|
||
|
- * must fit within it.
|
||
|
+ * The SDM states:
|
||
|
+ * - Data size must be a multiple of 4.
|
||
|
+ * - Total size must be a multiple of 1024 bytes. Data size and the
|
||
|
+ * header must fit within it.
|
||
|
*/
|
||
|
if ( (total_size & 1023) ||
|
||
|
+ (data_size & 3) ||
|
||
|
data_size > (total_size - MC_HEADER_SIZE) )
|
||
|
{
|
||
|
printk(XENLOG_WARNING "microcode: Bad size\n");
|