Search Linux Wireless

[PATCH] mac80211: Fix sta_mtx unlocking on insert STA failure path

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Commit 34e895075e21be3e21e71d6317440d1ee7969ad0 introduced sta_mtx
locking into sta_info_insert() (now sta_info_insert_rcu), but forgot
to unlock this mutex on one of the error paths. Fix this by adding
the missing mutex_unlock() call for the case where STA insert fails
due to an entry existing already. This may happen at least in AP mode
when a STA roams between two BSSes (vifs).

Signed-off-by: Jouni Malinen <j@xxxxx>

---
 net/mac80211/sta_info.c |    1 +
 1 file changed, 1 insertion(+)

By the way, that roaming between two vifs did not work either, but
regardless, fixing missing mutex_unlock is of higher priority.. The STA
entry was not updated to point to the correct dev when the STA roamed
from one BSS to another one (both BSSes running on the same wiphy). To
be more exact, I think it was updated once, but not when roaming back to
the original BSS.

--- wireless-testing.orig/net/mac80211/sta_info.c	2010-03-06 17:53:12.000000000 +0200
+++ wireless-testing/net/mac80211/sta_info.c	2010-03-06 17:54:04.000000000 +0200
@@ -434,6 +434,7 @@ int sta_info_insert_rcu(struct sta_info 
 	/* check if STA exists already */
 	if (sta_info_get_bss(sdata, sta->sta.addr)) {
 		spin_unlock_irqrestore(&local->sta_lock, flags);
+		mutex_unlock(&local->sta_mtx);
 		rcu_read_lock();
 		err = -EEXIST;
 		goto out_free;

-- 
Jouni Malinen                                            PGP id EFC895FA
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux