[openwrt/openwrt] mac80211: always call wireless_set_data (FS#3784)

LEDE Commits lede-commits at lists.infradead.org
Mon Jun 28 08:24:32 PDT 2021


nbd pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/d515f6b6cde357bf480d32a7387f07ea40e85e52

commit d515f6b6cde357bf480d32a7387f07ea40e85e52
Author: Bob Cantor <coxede6557 at w3boats.com>
AuthorDate: Fri Jun 25 04:07:34 2021 +1000

    mac80211: always call wireless_set_data  (FS#3784)
    
    When wifi is turned off, drv_mac80211_teardown sometimes fails (silently)
    because the device to be torn down is not defined.
    
    This situation arises if drv_mac80211_setup was called twice when
    wifi was turned on.
    
    This commit ensures that the device to be torn down is always defined
    in drv_mac80211_teardown.
    
    Steps to reproduce:
    
    1) Use /sbin/wifi to turn on wifi.
       uci set wireless. at wifi-iface[0].disabled=0
       uci set wireless. at wifi-device[0].disabled=0
       uci commit
       wifi
    
    2) Use /sbin/wifi to turn off wifi.
       uci set wireless. at wifi-device[0].disabled=1
       uci commit
       wifi
    
    3) Observe that wifi is still up.
    
    branches affected: trunk, 21.02
    
    Signed-off-by: Bob Cantor <coxede6557 at w3boats.com>
---
 package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
index c7437d5a96..ffb3662d04 100644
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -1021,10 +1021,8 @@ drv_mac80211_setup() {
 		return 1
 	}
 
-	[ -z "$(uci -q -P /var/state show wireless._${phy})" ] && {
-		uci -q -P /var/state set wireless._${phy}=phy
-		wireless_set_data phy="$phy"
-	}
+	wireless_set_data phy="$phy"
+	[ -z "$(uci -q -P /var/state show wireless._${phy})" ] && uci -q -P /var/state set wireless._${phy}=phy
 
 	OLDAPLIST=$(uci -q -P /var/state get wireless._${phy}.aplist)
 	OLDSPLIST=$(uci -q -P /var/state get wireless._${phy}.splist)



More information about the lede-commits mailing list