Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=13f227b8681f237f7403c59984bf6484419ce103
commit 13f227b8681f237f7403c59984bf6484419ce103 Author: DeX77 <[email protected]> Date: Thu Oct 5 11:33:44 2017 +0200 kernel-4.13.5-1-x86_64 * kernel 4.13.5 diff --git a/source/base/kernel/FrugalBuild b/source/base/kernel/FrugalBuild index 2966f77..9abc252 100644 --- a/source/base/kernel/FrugalBuild +++ b/source/base/kernel/FrugalBuild @@ -29,7 +29,6 @@ _F_archive_grepv="rc" up2date="Flasttar $url" _F_kernel_patches=( mac80211-98e93e968e4947cd71c2eb69e323682daa453ee7.patch \ - mac80211-bde59c475e0883e4c4294bcd9b9c7e08ae18c828.patch \ ath10k-stop-spam-the-dmesg.patch \ enable_alx_wol.patch ) diff --git a/source/base/kernel/mac80211-bde59c475e0883e4c4294bcd9b9c7e08ae18c828.patch b/source/base/kernel/mac80211-bde59c475e0883e4c4294bcd9b9c7e08ae18c828.patch deleted file mode 100644 index 4909fb9..0000000 --- a/source/base/kernel/mac80211-bde59c475e0883e4c4294bcd9b9c7e08ae18c828.patch +++ /dev/null @@ -1,143 +0,0 @@ -commit bde59c475e0883e4c4294bcd9b9c7e08ae18c828 -Author: Johannes Berg <[email protected]> -Date: Wed Sep 6 15:01:42 2017 +0200 - - mac80211: fix deadlock in driver-managed RX BA session start - - When an RX BA session is started by the driver, and it has to tell - mac80211 about it, the corresponding bit in tid_rx_manage_offl gets - set and the BA session work is scheduled. Upon testing this bit, it - will call __ieee80211_start_rx_ba_session(), thus deadlocking as it - already holds the ampdu_mlme.mtx, which that acquires again. - - Fix this by adding ___ieee80211_start_rx_ba_session(), a version of - the function that requires the mutex already held. - - Cc: [email protected] - Fixes: 699cb58c8a52 ("mac80211: manage RX BA session offload without SKB queue") - Reported-by: Matteo Croce <[email protected]> - Signed-off-by: Johannes Berg <[email protected]> - -diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c -index 2b36eff5d97e..2849a1fc41c5 100644 ---- a/net/mac80211/agg-rx.c -+++ b/net/mac80211/agg-rx.c -@@ -245,10 +245,10 @@ static void ieee80211_send_addba_resp(struct ieee80211_sub_if_data *sdata, u8 *d - ieee80211_tx_skb(sdata, skb); - } - --void __ieee80211_start_rx_ba_session(struct sta_info *sta, -- u8 dialog_token, u16 timeout, -- u16 start_seq_num, u16 ba_policy, u16 tid, -- u16 buf_size, bool tx, bool auto_seq) -+void ___ieee80211_start_rx_ba_session(struct sta_info *sta, -+ u8 dialog_token, u16 timeout, -+ u16 start_seq_num, u16 ba_policy, u16 tid, -+ u16 buf_size, bool tx, bool auto_seq) - { - struct ieee80211_local *local = sta->sdata->local; - struct tid_ampdu_rx *tid_agg_rx; -@@ -267,7 +267,7 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta, - ht_dbg(sta->sdata, - "STA %pM requests BA session on unsupported tid %d\n", - sta->sta.addr, tid); -- goto end_no_lock; -+ goto end; - } - - if (!sta->sta.ht_cap.ht_supported) { -@@ -275,14 +275,14 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta, - "STA %pM erroneously requests BA session on tid %d w/o QoS\n", - sta->sta.addr, tid); - /* send a response anyway, it's an error case if we get here */ -- goto end_no_lock; -+ goto end; - } - - if (test_sta_flag(sta, WLAN_STA_BLOCK_BA)) { - ht_dbg(sta->sdata, - "Suspend in progress - Denying ADDBA request (%pM tid %d)\n", - sta->sta.addr, tid); -- goto end_no_lock; -+ goto end; - } - - /* sanity check for incoming parameters: -@@ -296,7 +296,7 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta, - ht_dbg_ratelimited(sta->sdata, - "AddBA Req with bad params from %pM on tid %u. policy %d, buffer size %d\n", - sta->sta.addr, tid, ba_policy, buf_size); -- goto end_no_lock; -+ goto end; - } - /* determine default buffer size */ - if (buf_size == 0) -@@ -311,7 +311,7 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta, - buf_size, sta->sta.addr); - - /* examine state machine */ -- mutex_lock(&sta->ampdu_mlme.mtx); -+ lockdep_assert_held(&sta->ampdu_mlme.mtx); - - if (test_bit(tid, sta->ampdu_mlme.agg_session_valid)) { - if (sta->ampdu_mlme.tid_rx_token[tid] == dialog_token) { -@@ -415,15 +415,25 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta, - __clear_bit(tid, sta->ampdu_mlme.unexpected_agg); - sta->ampdu_mlme.tid_rx_token[tid] = dialog_token; - } -- mutex_unlock(&sta->ampdu_mlme.mtx); - --end_no_lock: - if (tx) - ieee80211_send_addba_resp(sta->sdata, sta->sta.addr, tid, - dialog_token, status, 1, buf_size, - timeout); - } - -+void __ieee80211_start_rx_ba_session(struct sta_info *sta, -+ u8 dialog_token, u16 timeout, -+ u16 start_seq_num, u16 ba_policy, u16 tid, -+ u16 buf_size, bool tx, bool auto_seq) -+{ -+ mutex_lock(&sta->ampdu_mlme.mtx); -+ ___ieee80211_start_rx_ba_session(sta, dialog_token, timeout, -+ start_seq_num, ba_policy, tid, -+ buf_size, tx, auto_seq); -+ mutex_unlock(&sta->ampdu_mlme.mtx); -+} -+ - void ieee80211_process_addba_request(struct ieee80211_local *local, - struct sta_info *sta, - struct ieee80211_mgmt *mgmt, -diff --git a/net/mac80211/ht.c b/net/mac80211/ht.c -index 4cba7fca10d4..d6d0b4201e40 100644 ---- a/net/mac80211/ht.c -+++ b/net/mac80211/ht.c -@@ -351,9 +351,9 @@ void ieee80211_ba_session_work(struct work_struct *work) - - if (test_and_clear_bit(tid, - sta->ampdu_mlme.tid_rx_manage_offl)) -- __ieee80211_start_rx_ba_session(sta, 0, 0, 0, 1, tid, -- IEEE80211_MAX_AMPDU_BUF, -- false, true); -+ ___ieee80211_start_rx_ba_session(sta, 0, 0, 0, 1, tid, -+ IEEE80211_MAX_AMPDU_BUF, -+ false, true); - - if (test_and_clear_bit(tid + IEEE80211_NUM_TIDS, - sta->ampdu_mlme.tid_rx_manage_offl)) -diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h -index 2197c62a0a6e..9675814f64db 100644 ---- a/net/mac80211/ieee80211_i.h -+++ b/net/mac80211/ieee80211_i.h -@@ -1760,6 +1760,10 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta, - u8 dialog_token, u16 timeout, - u16 start_seq_num, u16 ba_policy, u16 tid, - u16 buf_size, bool tx, bool auto_seq); -+void ___ieee80211_start_rx_ba_session(struct sta_info *sta, -+ u8 dialog_token, u16 timeout, -+ u16 start_seq_num, u16 ba_policy, u16 tid, -+ u16 buf_size, bool tx, bool auto_seq); - void ieee80211_sta_tear_down_BA_sessions(struct sta_info *sta, - enum ieee80211_agg_stop_reason reason); - void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata, diff --git a/source/include/kernel-version.sh b/source/include/kernel-version.sh index 687c9a0..2d62111 100644 --- a/source/include/kernel-version.sh +++ b/source/include/kernel-version.sh @@ -16,7 +16,7 @@ # * _F_kernelver_stable: the number of the -stable patch to use (if any) # * _F_kernelver_nextver: the next kernel version ### -_F_kernelver_ver=4.13.4 +_F_kernelver_ver=4.13.5 _F_kernelver_rel=1 ### _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
