Commit 80a112ff authored by Kalle Valo's avatar Kalle Valo Committed by John W. Linville

wl1251: fix sleep related error paths in wl1251_op_bss_info_changed()

In various cases wl1251_op_bss_info_changed() did not call elp_sleep()
after an error was noticed. Fix it by using correct goto label.

The bug was a theoretical one, in practise it doesn't matter because
if commands start returning errors there will be lots of other problems.
Signed-off-by: default avatarKalle Valo <kalle.valo@nokia.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent dc52f0a8
...@@ -946,7 +946,7 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw, ...@@ -946,7 +946,7 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
skb->data, skb->len); skb->data, skb->len);
dev_kfree_skb(skb); dev_kfree_skb(skb);
if (ret < 0) if (ret < 0)
goto out; goto out_sleep;
if (wl->bss_type != BSS_TYPE_IBSS) { if (wl->bss_type != BSS_TYPE_IBSS) {
ret = wl1251_join(wl, wl->bss_type, wl->channel, ret = wl1251_join(wl, wl->bss_type, wl->channel,
...@@ -1018,7 +1018,7 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw, ...@@ -1018,7 +1018,7 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
ret = wl1251_acx_cts_protect(wl, CTSPROTECT_DISABLE); ret = wl1251_acx_cts_protect(wl, CTSPROTECT_DISABLE);
if (ret < 0) { if (ret < 0) {
wl1251_warning("Set ctsprotect failed %d", ret); wl1251_warning("Set ctsprotect failed %d", ret);
goto out; goto out_sleep;
} }
} }
...@@ -1029,7 +1029,7 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw, ...@@ -1029,7 +1029,7 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
if (ret < 0) { if (ret < 0) {
dev_kfree_skb(beacon); dev_kfree_skb(beacon);
goto out; goto out_sleep;
} }
ret = wl1251_cmd_template_set(wl, CMD_PROBE_RESP, beacon->data, ret = wl1251_cmd_template_set(wl, CMD_PROBE_RESP, beacon->data,
...@@ -1038,13 +1038,13 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw, ...@@ -1038,13 +1038,13 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
dev_kfree_skb(beacon); dev_kfree_skb(beacon);
if (ret < 0) if (ret < 0)
goto out; goto out_sleep;
ret = wl1251_join(wl, wl->bss_type, wl->beacon_int, ret = wl1251_join(wl, wl->bss_type, wl->beacon_int,
wl->channel, wl->dtim_period); wl->channel, wl->dtim_period);
if (ret < 0) if (ret < 0)
goto out; goto out_sleep;
} }
out_sleep: out_sleep:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment