Skip to contentSkip to conversation

x86: microcode patch loader cleanup and fix

PATCH Applied Peter Oruba 3 participants 7 messages Aug 1, 2008 – Aug 15, 2008 x86

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw

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
index 28dba1a..39961bb 100644
@@ -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		= &microcode_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(&microcode_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
#2 lore raw

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;
 		/*

_

#3 lore raw

PATCH 2/2 x86: Fixed NULL function pointer dereference in AMD microcode patch loader.

In reply to Peter Oruba

Dereference 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
index 39961bb..ad136ad 100644
@@ -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
#4 lore raw

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
index 39961bb..ad136ad 100644

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.

#5 lore raw

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 -0
index 39961bb..ad136ad 100644

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.

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 McCoy
Applied
#6 lore raw
In reply to Peter Oruba
Quoted 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