diff options
Diffstat (limited to 'net/wireless/reg.c')
| -rw-r--r-- | net/wireless/reg.c | 19 | 
1 files changed, 9 insertions, 10 deletions
diff --git a/net/wireless/reg.c b/net/wireless/reg.c index ed89c59bb43..8f0d97dd310 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -33,6 +33,7 @@   *   */  #include <linux/kernel.h> +#include <linux/slab.h>  #include <linux/list.h>  #include <linux/random.h>  #include <linux/nl80211.h> @@ -324,7 +325,7 @@ struct reg_regdb_search_request {  };  static LIST_HEAD(reg_regdb_search_list); -static DEFINE_SPINLOCK(reg_regdb_search_lock); +static DEFINE_MUTEX(reg_regdb_search_mutex);  static void reg_regdb_search(struct work_struct *work)  { @@ -332,7 +333,7 @@ static void reg_regdb_search(struct work_struct *work)  	const struct ieee80211_regdomain *curdom, *regdom;  	int i, r; -	spin_lock(®_regdb_search_lock); +	mutex_lock(®_regdb_search_mutex);  	while (!list_empty(®_regdb_search_list)) {  		request = list_first_entry(®_regdb_search_list,  					   struct reg_regdb_search_request, @@ -346,18 +347,16 @@ static void reg_regdb_search(struct work_struct *work)  				r = reg_copy_regd(®dom, curdom);  				if (r)  					break; -				spin_unlock(®_regdb_search_lock);  				mutex_lock(&cfg80211_mutex);  				set_regdom(regdom);  				mutex_unlock(&cfg80211_mutex); -				spin_lock(®_regdb_search_lock);  				break;  			}  		}  		kfree(request);  	} -	spin_unlock(®_regdb_search_lock); +	mutex_unlock(®_regdb_search_mutex);  }  static DECLARE_WORK(reg_regdb_work, reg_regdb_search); @@ -375,9 +374,9 @@ static void reg_regdb_query(const char *alpha2)  	memcpy(request->alpha2, alpha2, 2); -	spin_lock(®_regdb_search_lock); +	mutex_lock(®_regdb_search_mutex);  	list_add_tail(&request->list, ®_regdb_search_list); -	spin_unlock(®_regdb_search_lock); +	mutex_unlock(®_regdb_search_mutex);  	schedule_work(®_regdb_work);  } @@ -2357,10 +2356,10 @@ static void print_regdomain(const struct ieee80211_regdomain *rd)  					rdev->country_ie_alpha2[1]);  			} else  				printk(KERN_INFO "cfg80211: Current regulatory " -					"domain intersected: \n"); +					"domain intersected:\n");  		} else -				printk(KERN_INFO "cfg80211: Current regulatory " -					"domain intersected: \n"); +			printk(KERN_INFO "cfg80211: Current regulatory " +				"domain intersected:\n");  	} else if (is_world_regdom(rd->alpha2))  		printk(KERN_INFO "cfg80211: World regulatory "  			"domain updated:\n");  |