From bd8e39f9e4c0960541c8c69e1f7cb321574d7c90 Mon Sep 17 00:00:00 2001 From: Shaohua Li Date: Wed, 27 Sep 2006 01:50:54 -0700 Subject: [PATCH] [PATCH] x86 microcode: don't check the size IA32 manual says if micorcode update's size is 0, then the size is default size (2048 bytes). But this doesn't suggest all microcode update's size should be above 2048 bytes to me. We actually had a microcode update whose size is 1024 bytes. The patch just removed the check. Signed-off-by: Shaohua Li Cc: Tigran Aivazian Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- arch/i386/kernel/microcode.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/arch/i386/kernel/microcode.c b/arch/i386/kernel/microcode.c index 467901ebb992..9b9479768d5e 100644 --- a/arch/i386/kernel/microcode.c +++ b/arch/i386/kernel/microcode.c @@ -187,8 +187,7 @@ static int microcode_sanity_check(void *mc) total_size = get_totalsize(mc_header); data_size = get_datasize(mc_header); - if ((data_size + MC_HEADER_SIZE > total_size) - || (data_size < DEFAULT_UCODE_DATASIZE)) { + if (data_size + MC_HEADER_SIZE > total_size) { printk(KERN_ERR "microcode: error! " "Bad data size in microcode data file\n"); return -EINVAL; @@ -365,8 +364,7 @@ static long get_next_ucode(void **mc, long offset) return -EFAULT; } total_size = get_totalsize(&mc_header); - if ((offset + total_size > user_buffer_size) - || (total_size < DEFAULT_UCODE_TOTALSIZE)) { + if (offset + total_size > user_buffer_size) { printk(KERN_ERR "microcode: error! Bad total size in microcode " "data file\n"); return -EINVAL; @@ -432,11 +430,6 @@ static ssize_t microcode_write (struct file *file, const char __user *buf, size_ { ssize_t ret; - if (len < DEFAULT_UCODE_TOTALSIZE) { - printk(KERN_ERR "microcode: not enough data\n"); - return -EINVAL; - } - if ((len >> PAGE_SHIFT) > num_physpages) { printk(KERN_ERR "microcode: too much data (max %ld pages)\n", num_physpages); return -EINVAL; @@ -508,8 +501,7 @@ static long get_next_ucode_from_buffer(void **mc, void *buf, mc_header = (microcode_header_t *)(buf + offset); total_size = get_totalsize(mc_header); - if ((offset + total_size > size) - || (total_size < DEFAULT_UCODE_TOTALSIZE)) { + if (offset + total_size > size) { printk(KERN_ERR "microcode: error! Bad data in microcode data file\n"); return -EINVAL; } -- 2.30.2