diff options
Diffstat (limited to 'arch/x86/kernel/alternative.c')
| -rw-r--r-- | arch/x86/kernel/alternative.c | 22 | 
1 files changed, 11 insertions, 11 deletions
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c index 65c7857a90d..2763cb37b55 100644 --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c @@ -1,6 +1,6 @@  #include <linux/module.h>  #include <linux/sched.h> -#include <linux/spinlock.h> +#include <linux/mutex.h>  #include <linux/list.h>  #include <linux/kprobes.h>  #include <linux/mm.h> @@ -143,7 +143,7 @@ static const unsigned char *const p6_nops[ASM_NOP_MAX+1] = {  #ifdef CONFIG_X86_64  extern char __vsyscall_0; -static inline const unsigned char*const * find_nop_table(void) +const unsigned char *const *find_nop_table(void)  {  	return boot_cpu_data.x86_vendor != X86_VENDOR_INTEL ||  	       boot_cpu_data.x86 < 6 ? k8_nops : p6_nops; @@ -162,7 +162,7 @@ static const struct nop {  	{ -1, NULL }  }; -static const unsigned char*const * find_nop_table(void) +const unsigned char *const *find_nop_table(void)  {  	const unsigned char *const *noptable = intel_nops;  	int i; @@ -279,7 +279,7 @@ struct smp_alt_module {  	struct list_head next;  };  static LIST_HEAD(smp_alt_modules); -static DEFINE_SPINLOCK(smp_alt); +static DEFINE_MUTEX(smp_alt);  static int smp_mode = 1;	/* protected by smp_alt */  void alternatives_smp_module_add(struct module *mod, char *name, @@ -312,12 +312,12 @@ void alternatives_smp_module_add(struct module *mod, char *name,  		__func__, smp->locks, smp->locks_end,  		smp->text, smp->text_end, smp->name); -	spin_lock(&smp_alt); +	mutex_lock(&smp_alt);  	list_add_tail(&smp->next, &smp_alt_modules);  	if (boot_cpu_has(X86_FEATURE_UP))  		alternatives_smp_unlock(smp->locks, smp->locks_end,  					smp->text, smp->text_end); -	spin_unlock(&smp_alt); +	mutex_unlock(&smp_alt);  }  void alternatives_smp_module_del(struct module *mod) @@ -327,17 +327,17 @@ void alternatives_smp_module_del(struct module *mod)  	if (smp_alt_once || noreplace_smp)  		return; -	spin_lock(&smp_alt); +	mutex_lock(&smp_alt);  	list_for_each_entry(item, &smp_alt_modules, next) {  		if (mod != item->mod)  			continue;  		list_del(&item->next); -		spin_unlock(&smp_alt); +		mutex_unlock(&smp_alt);  		DPRINTK("%s: %s\n", __func__, item->name);  		kfree(item);  		return;  	} -	spin_unlock(&smp_alt); +	mutex_unlock(&smp_alt);  }  void alternatives_smp_switch(int smp) @@ -359,7 +359,7 @@ void alternatives_smp_switch(int smp)  		return;  	BUG_ON(!smp && (num_online_cpus() > 1)); -	spin_lock(&smp_alt); +	mutex_lock(&smp_alt);  	/*  	 * Avoid unnecessary switches because it forces JIT based VMs to @@ -383,7 +383,7 @@ void alternatives_smp_switch(int smp)  						mod->text, mod->text_end);  	}  	smp_mode = smp; -	spin_unlock(&smp_alt); +	mutex_unlock(&smp_alt);  }  #endif  |