فهرست منبع

mac80211: fix spinlock recursion on sta expiration

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Luis Carlos Cobo 17 سال پیش
والد
کامیت
cb585bccfe
3فایلهای تغییر یافته به همراه3 افزوده شده و 2 حذف شده
  1. 1 1
      net/mac80211/ieee80211_sta.c
  2. 1 1
      net/mac80211/sta_info.c
  3. 1 0
      net/mac80211/sta_info.h

+ 1 - 1
net/mac80211/ieee80211_sta.c

@@ -3079,7 +3079,7 @@ static void ieee80211_sta_expire(struct net_device *dev, unsigned long exp_time)
 		if (time_after(jiffies, sta->last_rx + exp_time)) {
 			printk(KERN_DEBUG "%s: expiring inactive STA %s\n",
 			       dev->name, print_mac(mac, sta->addr));
-			sta_info_unlink(&sta);
+			__sta_info_unlink(&sta);
 			if (sta)
 				list_add(&sta->list, &tmp_list);
 		}

+ 1 - 1
net/mac80211/sta_info.c

@@ -454,7 +454,7 @@ static struct sta_info *__sta_info_unpin(struct sta_info *sta)
 	return ret;
 }
 
-static void __sta_info_unlink(struct sta_info **sta)
+void __sta_info_unlink(struct sta_info **sta)
 {
 	struct ieee80211_local *local = (*sta)->local;
 	struct ieee80211_sub_if_data *sdata = (*sta)->sdata;

+ 1 - 0
net/mac80211/sta_info.h

@@ -347,6 +347,7 @@ int sta_info_insert(struct sta_info *sta);
  * has already unlinked it.
  */
 void sta_info_unlink(struct sta_info **sta);
+void __sta_info_unlink(struct sta_info **sta);
 
 void sta_info_destroy(struct sta_info *sta);
 void sta_info_set_tim_bit(struct sta_info *sta);