Просмотр исходного кода

madwifi: fix a locking error related to wds (thx, tharvey)

SVN-Revision: 14990
Felix Fietkau 17 лет назад
Родитель
Сommit
c85a831b14
1 измененных файлов с 6 добавлено и 6 удалено
  1. 6 6
      package/madwifi/patches/370-wdsvap.patch

+ 6 - 6
package/madwifi/patches/370-wdsvap.patch

@@ -813,11 +813,10 @@
 +				 (vap->iv_opmode == IEEE80211_M_WDS)) &&
 +				(scan.capinfo & IEEE80211_CAPINFO_ESS))) {
 +			struct ieee80211vap *avp = NULL;
++			int found = 0;
 +
 +			IEEE80211_LOCK_IRQ(vap->iv_ic);
 +			if (vap->iv_opmode == IEEE80211_M_HOSTAP) {
-+				int found = 0;
-+
 +				TAILQ_FOREACH(avp, &vap->iv_wdslinks, iv_wdsnext) {
 +					if (!memcmp(avp->wds_mac, wh->i_addr2, IEEE80211_ADDR_LEN)) {
 +						if (avp->iv_state != IEEE80211_S_RUN)
@@ -826,15 +825,16 @@
 +						break;
 +					}
 +				}
-+				if (!found)
-+					break;
-+
-+				ni = ni_or_null = avp->iv_wdsnode;
++				if (found)
++					ni = ni_or_null = avp->iv_wdsnode;
 +			} else if (vap->iv_opmode == IEEE80211_M_WDS) {
++				found = 1;
 +				ni = ni_or_null = vap->iv_wdsnode;
 +			}
 +			IEEE80211_UNLOCK_IRQ(vap->iv_ic);
 +
++			if (!found)
++				break;
 +
  			if (ni_or_null == NULL) {
 -				/* Create a new entry in the neighbor table. */