]> err.no Git - linux-2.6/commitdiff
mac80211: fix spinlock recursion on sta expiration
authorLuis Carlos Cobo <luisca@cozybit.com>
Mon, 31 Mar 2008 22:21:23 +0000 (15:21 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 1 Apr 2008 21:14:11 +0000 (17:14 -0400)
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>
net/mac80211/ieee80211_sta.c
net/mac80211/sta_info.c
net/mac80211/sta_info.h

index b836948a0b40e5a38426c4ca545b424b72b6139d..152682d4bb1ac66421bc46ec5c9b1a766bda5ed9 100644 (file)
@@ -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);
                }
index f5c65e8912885ac1883f083dbd986bd20f418fbf..7e1e87257647ff91ca245b69a41512a81b5c4d4a 100644 (file)
@@ -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;
index b09861eb124ee9108811e5015e1cb7fa8b9f1a04..ebb7b2b4d0b9fed5874253abaf2baf823930de4e 100644 (file)
@@ -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);