diff options
Diffstat (limited to 'net/wireless/reg.c')
| -rw-r--r-- | net/wireless/reg.c | 12 | 
1 files changed, 5 insertions, 7 deletions
diff --git a/net/wireless/reg.c b/net/wireless/reg.c index ed89c59bb43..81fcafc6015 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -324,7 +324,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 +332,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 +346,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 +373,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);  }  |