diff options
Diffstat (limited to 'arch/x86/kernel/microcode.c')
-rw-r--r-- | arch/x86/kernel/microcode.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/x86/kernel/microcode.c b/arch/x86/kernel/microcode.c index 9758fea87c5b..56b933119a04 100644 --- a/arch/x86/kernel/microcode.c +++ b/arch/x86/kernel/microcode.c | |||
@@ -76,6 +76,7 @@ | |||
76 | #include <linux/kernel.h> | 76 | #include <linux/kernel.h> |
77 | #include <linux/init.h> | 77 | #include <linux/init.h> |
78 | #include <linux/sched.h> | 78 | #include <linux/sched.h> |
79 | #include <linux/smp_lock.h> | ||
79 | #include <linux/cpumask.h> | 80 | #include <linux/cpumask.h> |
80 | #include <linux/module.h> | 81 | #include <linux/module.h> |
81 | #include <linux/slab.h> | 82 | #include <linux/slab.h> |
@@ -423,6 +424,7 @@ out: | |||
423 | 424 | ||
424 | static int microcode_open (struct inode *unused1, struct file *unused2) | 425 | static int microcode_open (struct inode *unused1, struct file *unused2) |
425 | { | 426 | { |
427 | cycle_kernel_lock(); | ||
426 | return capable(CAP_SYS_RAWIO) ? 0 : -EPERM; | 428 | return capable(CAP_SYS_RAWIO) ? 0 : -EPERM; |
427 | } | 429 | } |
428 | 430 | ||
@@ -489,7 +491,7 @@ MODULE_ALIAS_MISCDEV(MICROCODE_MINOR); | |||
489 | #define microcode_dev_exit() do { } while(0) | 491 | #define microcode_dev_exit() do { } while(0) |
490 | #endif | 492 | #endif |
491 | 493 | ||
492 | static long get_next_ucode_from_buffer(void **mc, void *buf, | 494 | static long get_next_ucode_from_buffer(void **mc, const u8 *buf, |
493 | unsigned long size, long offset) | 495 | unsigned long size, long offset) |
494 | { | 496 | { |
495 | microcode_header_t *mc_header; | 497 | microcode_header_t *mc_header; |
@@ -523,7 +525,7 @@ static int cpu_request_microcode(int cpu) | |||
523 | char name[30]; | 525 | char name[30]; |
524 | struct cpuinfo_x86 *c = &cpu_data(cpu); | 526 | struct cpuinfo_x86 *c = &cpu_data(cpu); |
525 | const struct firmware *firmware; | 527 | const struct firmware *firmware; |
526 | void *buf; | 528 | const u8 *buf; |
527 | unsigned long size; | 529 | unsigned long size; |
528 | long offset = 0; | 530 | long offset = 0; |
529 | int error; | 531 | int error; |