lkml.org 
[lkml]   [2006]   [Sep]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Subject[PATCH] x86 microcode: don't check the size
From
Date
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 <shaohua.li@intel.com>

---
work/src/linux-2.6.18-rc5-mm1/arch/i386/kernel/microcode.c | 14 ++-----------
1 files changed, 3 insertions(+), 11 deletions(-)
Index: root/work/src/linux-2.6.18-rc5-mm1/arch/i386/kernel/microcode.c
===================================================================
--- root.orig/work/src/linux-2.6.18-rc5-mm1/arch/i386/kernel/microcode.c 2006-09-06 06:51:03.000000000 +0800
+++ root/work/src/linux-2.6.18-rc5-mm1/arch/i386/kernel/microcode.c 2006-09-06 08:20:35.000000000 +0800
@@ -187,8 +187,7 @@ static int microcode_sanity_check(void *

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, lo
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 f
{
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(v
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;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2006-09-07 04:55    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site