diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-10-05 11:50:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-10-05 11:50:15 -0400 |
commit | 9819a30c11ea439e5e3c81f5539c4d42d6c76314 (patch) | |
tree | eee29b4735a2ddb944260ad3d281efd4a56788cc /net/mac80211/util.c | |
parent | 6fe137cbe3e85e832a169006e8ccc04cec69c653 (diff) | |
parent | ef129d34149ea23d0d442844fc25ae26a85589fc (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from David Miller:
1) Fix ieeeu02154 atusb driver use-after-free, from Johan Hovold.
2) Need to validate TCA_CBQ_WRROPT netlink attributes, from Eric
Dumazet.
3) txq null deref in mac80211, from Miaoqing Pan.
4) ionic driver needs to select NET_DEVLINK, from Arnd Bergmann.
5) Need to disable bh during nft_connlimit GC, from Pablo Neira Ayuso.
6) Avoid division by zero in taprio scheduler, from Vladimir Oltean.
7) Various xgmac fixes in stmmac driver from Jose Abreu.
8) Avoid 64-bit division in mlx5 leading to link errors on 32-bit from
Michal Kubecek.
9) Fix bad VLAN check in rtl8366 DSA driver, from Linus Walleij.
10) Fix sleep while atomic in sja1105, from Vladimir Oltean.
11) Suspend/resume deadlock in stmmac, from Thierry Reding.
12) Various UDP GSO fixes from Josh Hunt.
13) Fix slab out of bounds access in tcp_zerocopy_receive(), from Eric
Dumazet.
14) Fix OOPS in __ipv6_ifa_notify(), from David Ahern.
15) Memory leak in NFC's llcp_sock_bind, from Eric Dumazet.
* git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (72 commits)
selftests/net: add nettest to .gitignore
net: qlogic: Fix memory leak in ql_alloc_large_buffers
nfc: fix memory leak in llcp_sock_bind()
sch_dsmark: fix potential NULL deref in dsmark_init()
net: phy: at803x: use operating parameters from PHY-specific status
net: phy: extract pause mode
net: phy: extract link partner advertisement reading
net: phy: fix write to mii-ctrl1000 register
ipv6: Handle missing host route in __ipv6_ifa_notify
net: phy: allow for reset line to be tied to a sleepy GPIO controller
net: ipv4: avoid mixed n_redirects and rate_tokens usage
r8152: Set macpassthru in reset_resume callback
cxgb4:Fix out-of-bounds MSI-X info array access
Revert "ipv6: Handle race in addrconf_dad_work"
net: make sock_prot_memory_pressure() return "const char *"
rxrpc: Fix rxrpc_recvmsg tracepoint
qmi_wwan: add support for Cinterion CLS8 devices
tcp: fix slab-out-of-bounds in tcp_zerocopy_receive()
lib: textsearch: fix escapes in example code
udp: only do GSO if # of segs > 1
...
Diffstat (limited to 'net/mac80211/util.c')
-rw-r--r-- | net/mac80211/util.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 051a02ddcb85..32a7a53833c0 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -247,7 +247,8 @@ static void __ieee80211_wake_txqs(struct ieee80211_sub_if_data *sdata, int ac) | |||
247 | struct sta_info *sta; | 247 | struct sta_info *sta; |
248 | int i; | 248 | int i; |
249 | 249 | ||
250 | spin_lock_bh(&fq->lock); | 250 | local_bh_disable(); |
251 | spin_lock(&fq->lock); | ||
251 | 252 | ||
252 | if (sdata->vif.type == NL80211_IFTYPE_AP) | 253 | if (sdata->vif.type == NL80211_IFTYPE_AP) |
253 | ps = &sdata->bss->ps; | 254 | ps = &sdata->bss->ps; |
@@ -273,9 +274,9 @@ static void __ieee80211_wake_txqs(struct ieee80211_sub_if_data *sdata, int ac) | |||
273 | &txqi->flags)) | 274 | &txqi->flags)) |
274 | continue; | 275 | continue; |
275 | 276 | ||
276 | spin_unlock_bh(&fq->lock); | 277 | spin_unlock(&fq->lock); |
277 | drv_wake_tx_queue(local, txqi); | 278 | drv_wake_tx_queue(local, txqi); |
278 | spin_lock_bh(&fq->lock); | 279 | spin_lock(&fq->lock); |
279 | } | 280 | } |
280 | } | 281 | } |
281 | 282 | ||
@@ -288,12 +289,14 @@ static void __ieee80211_wake_txqs(struct ieee80211_sub_if_data *sdata, int ac) | |||
288 | (ps && atomic_read(&ps->num_sta_ps)) || ac != vif->txq->ac) | 289 | (ps && atomic_read(&ps->num_sta_ps)) || ac != vif->txq->ac) |
289 | goto out; | 290 | goto out; |
290 | 291 | ||
291 | spin_unlock_bh(&fq->lock); | 292 | spin_unlock(&fq->lock); |
292 | 293 | ||
293 | drv_wake_tx_queue(local, txqi); | 294 | drv_wake_tx_queue(local, txqi); |
295 | local_bh_enable(); | ||
294 | return; | 296 | return; |
295 | out: | 297 | out: |
296 | spin_unlock_bh(&fq->lock); | 298 | spin_unlock(&fq->lock); |
299 | local_bh_enable(); | ||
297 | } | 300 | } |
298 | 301 | ||
299 | static void | 302 | static void |