--- arch/i386/kernel/microcode.c.0 Fri Mar 22 18:22:12 2002 +++ arch/i386/kernel/microcode.c Fri Mar 22 18:27:03 2002 @@ -55,6 +55,8 @@ * Tigran Aivazian , * Serialize updates as required on HT processors due to speculative * nature of implementation. + * 1.11 22 Mar 2001 Tigran Aivazian + * Fix the panic when writing zero-length microcode chunk. */ #include @@ -73,7 +75,7 @@ static spinlock_t microcode_update_lock = SPIN_LOCK_UNLOCKED; -#define MICROCODE_VERSION "1.10" +#define MICROCODE_VERSION "1.11" MODULE_DESCRIPTION("Intel CPU (IA-32) microcode update driver"); MODULE_AUTHOR("Tigran Aivazian "); @@ -330,9 +332,13 @@ { ssize_t ret; - if (len % sizeof(struct microcode) != 0) { + if (!len || len % sizeof(struct microcode) != 0) { printk(KERN_ERR "microcode: can only write in N*%d bytes units\n", sizeof(struct microcode)); + return -EINVAL; + } + if ((len >> PAGE_SHIFT) > num_physpages) { + printk(KERN_ERR "microcode: too much data (max %d pages)\n", num_physpages); return -EINVAL; } down_write(µcode_rwsem);