Skip to content

Commit

Permalink
[PATCH] x86 microcode: don't check the size
Browse files Browse the repository at this point in the history
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>
Cc: Tigran Aivazian <tigran@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Shaohua Li authored and Linus Torvalds committed Sep 27, 2006
1 parent 9a4b9ef commit bd8e39f
Showing 1 changed file with 3 additions and 11 deletions.
14 changes: 3 additions & 11 deletions arch/i386/kernel/microcode.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}
Expand Down

0 comments on commit bd8e39f

Please sign in to comment.