summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaohua Li <shaohua.li@intel.com>2007-04-24 01:25:26 +0200
committerAdrian Bunk <bunk@stusta.de>2007-04-24 01:25:26 +0200
commitfe1a5ddff7186192f9c6316798a85b3095696ea6 (patch)
tree8a69a4ea6a81ca6c5fd6d2ce8a3597f82001d59f
parent7a715c633b9188def897f019f1969e4352925f43 (diff)
downloadlwn-fe1a5ddff7186192f9c6316798a85b3095696ea6.tar.gz
lwn-fe1a5ddff7186192f9c6316798a85b3095696ea6.zip
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. Backported by Daniel Drake. Signed-off-by: Daniel Drake <dsd@gentoo.org> Signed-off-by: Adrian Bunk <bunk@stusta.de>
-rw-r--r--arch/i386/kernel/microcode.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/arch/i386/kernel/microcode.c b/arch/i386/kernel/microcode.c
index 5390b521aca0..a408fbd72a99 100644
--- a/arch/i386/kernel/microcode.c
+++ b/arch/i386/kernel/microcode.c
@@ -233,14 +233,14 @@ static int find_matching_ucodes (void)
}
total_size = get_totalsize(&mc_header);
- if ((cursor + total_size > user_buffer_size) || (total_size < DEFAULT_UCODE_TOTALSIZE)) {
+ if (cursor + total_size > user_buffer_size) {
printk(KERN_ERR "microcode: error! Bad data in microcode data file\n");
error = -EINVAL;
goto out;
}
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 in microcode data file\n");
error = -EINVAL;
goto out;
@@ -437,11 +437,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;