x86: microcode patch loader cleanup and fix
cover x86: microcode patch loader cleanup and fix
This patch set cleans up vendor independent microcode loading module and corrects one misbehaviour in AMD specific module.
Thanks,
Peter
PATCH 1/2 x86: Microcode patch loader style corrections
Style corrections to main microcode module.
--- arch/x86/kernel/microcode.c | 24 +++++++++++++----------- 1 files changed, 13 insertions(+), 11 deletions(-)
arch/x86/kernel/microcode.c +13 -11
@@ -55,8 +55,8 @@* in a single CPU package. * 1.10 28 Feb 2002 Asit K Mallick <[email protected]> and * Tigran Aivazian <[email protected]>, -* Serialize updates as required on HT processors due to speculative -* nature of implementation. +* Serialize updates as required on HT processors due to +* speculative nature of implementation. * 1.11 22 Mar 2002 Tigran Aivazian <[email protected]> * Fix the panic when writing zero-length microcode chunk. * 1.12 29 Sep 2003 Nitin Kamble <[email protected]>,
@@ -71,7 +71,7 @@* Thanks to Stuart Swales for pointing out this bug. */ -//#define DEBUG /* pr_debug */ +/*#define DEBUG pr_debug */ #include <linux/capability.h> #include <linux/kernel.h> #include <linux/init.h>
@@ -116,7 +116,7 @@ EXPORT_SYMBOL_GPL(user_buffer);unsigned int user_buffer_size;/* it's size */ EXPORT_SYMBOL_GPL (user_buffer_size); -static int do_microcode_update (void ) +static int do_microcode_update (void ) {long cursor =0 ;int error =0 ;
@@ -158,18 +158,20 @@ out:return error; } -static int microcode_open (struct inode *unused1,struct file *unused2) +static int microcode_open (struct inode *unused1,struct file *unused2) {cycle_kernel_lock ();return capable (CAP_SYS_RAWIO ) ?0 : -EPERM ; } -static ssize_t microcode_write (struct file *file,const char __user *buf,size_t len,loff_t *ppos) +static ssize_t microcode_write (struct file *file,const char __user *buf, +size_t len,loff_t *ppos) {ssize_t ret;if ((len >>PAGE_SHIFT ) > num_physpages) { -printk (KERN_ERR "microcode: too much data (max %ld pages)\n" , num_physpages); +printk (KERN_ERR "microcode: too much data (max %ld pages)\n" , + num_physpages);return -EINVAL ; }
@@ -201,7 +203,7 @@ static struct miscdevice microcode_dev = { .fops = µcode_fops, }; -static int __init microcode_dev_init (void ) +static int __init microcode_dev_init (void ) {int error;
@@ -216,7 +218,7 @@ static int __init microcode_dev_init (void)return 0 ; } -static void microcode_dev_exit (void ) +static void microcode_dev_exit (void ) {misc_deregister (µcode_dev); }
@@ -224,7 +226,7 @@ static void microcode_dev_exit (void)MODULE_ALIAS_MISCDEV (MICROCODE_MINOR );#else #define microcode_dev_init () 0 -#define microcode_dev_exit () do { } while(0) +#define microcode_dev_exit () do { } while (0)#endif /* fake device for request_firmware */
@@ -451,7 +453,7 @@ int microcode_init(void *opaque, struct module *module) }EXPORT_SYMBOL_GPL (microcode_init); -void __exit microcode_exit (void) +void __exit microcode_exit(void) {microcode_dev_exit ();
Signature · 1 line
1.5.4.5
Re: [patch 1/2] [PATCH 1/2] x86: Microcode patch loader style corrections
Quoted 1 line · On Fri, 1 Aug 2008 12:46:45 +0200 Peter Oruba <[email protected]> wrote:
Style corrections to main microcode module.
Needed a few fixups to apply against linux-next.
While we're there, let's spell "matching" correctly.
arch/x86/kernel/microcode.c renamed from arch/x86/kernel/microcode.c~x86-microcode-patch-loader-style-corrections-fix +3 -3
@@ -264,7 +264,7 @@ static int microcode_sanity_check(void ** return 1 - found update * return < 0 - error */ -static int get_maching_microcode (void *mc,int cpu) +static int get_matching_microcode (void *mc,int cpu) {struct ucode_cpu_info *uci = ucode_cpu_info + cpu;microcode_header_t *mc_header = mc;
@@ -405,7 +405,7 @@ static int do_microcode_update(void)if (!uci->valid)continue ;set_cpus_allowed_ptr (current, &cpumask_of_cpu (cpu)); - error =get_maching_microcode (new_mc, cpu); + error =get_matching_microcode (new_mc, cpu);if (error <0 ) goto out;if (error ==1 )
@@ -549,7 +549,7 @@ static int cpu_request_microcode(int cpu error =microcode_sanity_check (mc);if (error)break ; - error =get_maching_microcode (mc, cpu); + error =get_matching_microcode (mc, cpu);if (error <0 )break ;/*
_
PATCH 2/2 x86: Fixed NULL function pointer dereference in AMD microcode patch loader.
In reply to Peter OrubaDereference took place in code part responsible for manual installation of microcode patches through /dev/cpu/microcode.
--- arch/x86/kernel/microcode.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
arch/x86/kernel/microcode.c +2 -1
@@ -127,7 +127,8 @@ static int do_microcode_update(void) old = current->cpus_allowed;while ((cursor = microcode_ops->get_next_ucode (&new_mc, cursor)) >0 ) { - error = microcode_ops->microcode_sanity_check (new_mc); +if (microcode_ops->microcode_sanity_check !=NULL ) + error = microcode_ops->microcode_sanity_check (new_mc);if (error) goto out;/*
Signature · 1 line
1.5.4.5
Re: [patch 2/2] [PATCH 2/2] x86: Fixed NULL function pointer dereference in AMD microcode patch loader.
Quoted 3 lines · On Fri, 1 Aug 2008 12:46:46 +0200 Peter Oruba <[email protected]> wrote:
Dereference took place in code part responsible for manual installation of microcode patches through
/dev/cpu/microcode.
That's a bit too terse.
Quoted 9 lines
--- arch/x86/kernel/microcode.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)arch/x86/kernel/microcode.c +0
-0
arch/x86/kernel/microcode.c static int do_microcode_update(void) · line 134
Quoted 9 lines
arch/x86/kernel/microcode.c +2
-1@@ -127,7 +127,8 @@ static int do_microcode_update(void) old = current->cpus_allowed;while ((cursor = microcode_ops->get_next_ucode (&new_mc, cursor)) >0 ) { - error = microcode_ops->microcode_sanity_check (new_mc); +if (microcode_ops->microcode_sanity_check !=NULL ) + error = microcode_ops->microcode_sanity_check (new_mc);if (error) goto out;/*
The patch is no longer applicable to current sources.
If the bug is sufficiently serious to warrant fixing in 2.6.25.x and in 2.6.26.x then please prepare patches against those kernels, including sufficient description to enable the -stable maintainers to understand why they need to merge it. Cc those patches to [email protected].
Thanks.
Re: [patch 2/2] [PATCH 2/2] x86: Fixed NULL function pointer dereference in AMD microcode patch loader.
Andrew,
that patch is only relevant in combination with the AMD microcode patch loader.
Thanks,
Peter
Quoted 38 lines · Andrew Morton
Quoted 3 lines · On Fri, 1 Aug 2008 12:46:46 +0200 Peter Oruba <[email protected]> wrote:
Dereference took place in code part responsible for manual installation of microcode patches through
/dev/cpu/microcode.That's a bit too terse.
Quoted 9 lines
--- arch/x86/kernel/microcode.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)arch/x86/kernel/microcode.c +0
-0arch/x86/kernel/microcode.c static int do_microcode_update(void) · line 134
Quoted 9 lines
arch/x86/kernel/microcode.c +2
-1@@ -127,7 +127,8 @@ static int do_microcode_update(void) old = current->cpus_allowed;while ((cursor = microcode_ops->get_next_ucode (&new_mc, cursor)) >0 ) { - error = microcode_ops->microcode_sanity_check (new_mc); +if (microcode_ops->microcode_sanity_check !=NULL ) + error = microcode_ops->microcode_sanity_check (new_mc);if (error) goto out;/* The patch is no longer applicable to current sources.
If the bug is sufficiently serious to warrant fixing in 2.6.25.x and in 2.6.26.x then please prepare patches against those kernels, including sufficient description to enable the -stable maintainers to understand why they need to merge it. Cc those patches to [email protected].
Thanks.
Signature · 6 lines
| AMD Saxony Limited Liability Company & Co. KG
Operating | Wilschdorfer Landstr. 101, 01109 Dresden, Germany
System | Register Court Dresden: HRA 4896
Research | General Partner authorized to represent:
Center | AMD Saxony LLC (Wilmington, Delaware, US)
| General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoyIngo Molnar
AppliedQuoted 2 lines · Peter Oruba
This patch set cleans up vendor independent microcode loading module and corrects one misbehaviour in AMD specific module.
applied to tip/x86/microcode - thanks Peter.
Ingo