mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 21:24:00 +08:00
A couple of more changes:
* remove a warning that can trigger in certain races * check a function pointer before using it * check before adding 6 GHz to avoid a warning in mesh * fix two memory leaks in mesh * fix a TX status bug leading to a memory leak -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEH1e1rEeCd0AIMq6MB8qZga/fl8QFAl8i4fUACgkQB8qZga/f l8TryA/+NVsEyCUgXRH4ZanXAGpC3QB7925f2THbgkOgdlKwR1iKGtmwZVIQKwl4 DdxUql/6C02l4fW+OBz23ohKkb9MixpSwiYjHKeqlC5EeNvmzLujG0A/X+Qvj/j0 iuttFNJxrwQ7ZCzqKbsufRL9BfWwaIVYB62HFd4gR/FBnPwNhZPlHLJMyzT54eIC ZdDQ8ynqij3uB2BS31J2l3clwO7iOg1ek81DsTgLp3nCGqIDwJzYMRqrVh5+9I1j yAwE9TCBxv8eEGJIFwpF+Yl0ffPvYXT0DjjeRQMOG7lIDa25orbIT8zHSt83y7My 6Rq+8Paw8Z2bQO0Z7EN3ys4fgqMqY1TTVzrTpF0XQaW+CnEdc3mvRN9UGDiViNcP JO9QH7RlCV+CQld/I5F/b3kbpt9DP+TFQyVaE62+OhgG5TCf7upJ7XmHK9IpoX7A cSjJxV8isWLzILTWLiHFXEkyCbdIYeq8PSvuIvJcxOH8hIQ+Si8Rv01K2Wvp0QpM mReW4MYbpHPju88aBl82Tl1fUwfQNfaMp41iN+b2zBS4xB4+zmTFnpq0lIS7azT/ 8Zx+9mlJKUd+YTTKcMvUrwJ2dH8b7w5bEllf5WAEGbLubo+dhgsZ+6PuLRrw/8J7 ujINEQTT+UarZWgevyCG6j/c229UiSfaQNCeoADUAhW4wMCPm3E= =xoMY -----END PGP SIGNATURE----- Merge tag 'mac80211-for-davem-2020-07-30' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211 Johannes Berg says: ==================== A couple of more changes: * remove a warning that can trigger in certain races * check a function pointer before using it * check before adding 6 GHz to avoid a warning in mesh * fix two memory leaks in mesh * fix a TX status bug leading to a memory leak ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
d0c3c75d5d
@ -2166,6 +2166,7 @@ static int ieee80211_leave_mesh(struct wiphy *wiphy, struct net_device *dev)
|
||||
ieee80211_stop_mesh(sdata);
|
||||
mutex_lock(&sdata->local->mtx);
|
||||
ieee80211_vif_release_channel(sdata);
|
||||
kfree(sdata->u.mesh.ie);
|
||||
mutex_unlock(&sdata->local->mtx);
|
||||
|
||||
return 0;
|
||||
|
@ -617,6 +617,19 @@ int mesh_add_he_oper_ie(struct ieee80211_sub_if_data *sdata,
|
||||
int mesh_add_he_6ghz_cap_ie(struct ieee80211_sub_if_data *sdata,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
struct ieee80211_supported_band *sband;
|
||||
const struct ieee80211_sband_iftype_data *iftd;
|
||||
|
||||
sband = ieee80211_get_sband(sdata);
|
||||
if (!sband)
|
||||
return -EINVAL;
|
||||
|
||||
iftd = ieee80211_get_sband_iftype_data(sband,
|
||||
NL80211_IFTYPE_MESH_POINT);
|
||||
/* The device doesn't support HE in mesh mode or at all */
|
||||
if (!iftd)
|
||||
return 0;
|
||||
|
||||
ieee80211_ie_build_he_6ghz_cap(sdata, skb);
|
||||
return 0;
|
||||
}
|
||||
|
@ -521,6 +521,7 @@ static void mesh_path_free_rcu(struct mesh_table *tbl,
|
||||
del_timer_sync(&mpath->timer);
|
||||
atomic_dec(&sdata->u.mesh.mpaths);
|
||||
atomic_dec(&tbl->entries);
|
||||
mesh_path_flush_pending(mpath);
|
||||
kfree_rcu(mpath, rcu);
|
||||
}
|
||||
|
||||
|
@ -1923,9 +1923,7 @@ void ieee80211_sta_update_pending_airtime(struct ieee80211_local *local,
|
||||
if (sta) {
|
||||
tx_pending = atomic_sub_return(tx_airtime,
|
||||
&sta->airtime[ac].aql_tx_pending);
|
||||
if (WARN_ONCE(tx_pending < 0,
|
||||
"STA %pM AC %d txq pending airtime underflow: %u, %u",
|
||||
sta->addr, ac, tx_pending, tx_airtime))
|
||||
if (tx_pending < 0)
|
||||
atomic_cmpxchg(&sta->airtime[ac].aql_tx_pending,
|
||||
tx_pending, 0);
|
||||
}
|
||||
|
@ -4230,11 +4230,12 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
|
||||
test_bit(SDATA_STATE_OFFCHANNEL, &sdata->state))
|
||||
goto out_free;
|
||||
|
||||
memset(info, 0, sizeof(*info));
|
||||
|
||||
if (unlikely(!multicast && skb->sk &&
|
||||
skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS))
|
||||
ieee80211_store_ack_skb(local, skb, &info->flags, NULL);
|
||||
|
||||
memset(info, 0, sizeof(*info));
|
||||
info->ack_frame_id = ieee80211_store_ack_skb(local, skb,
|
||||
&info->flags, NULL);
|
||||
|
||||
if (unlikely(sdata->control_port_protocol == ehdr->h_proto)) {
|
||||
if (sdata->control_port_no_encrypt)
|
||||
|
@ -2878,6 +2878,10 @@ void ieee80211_ie_build_he_6ghz_cap(struct ieee80211_sub_if_data *sdata,
|
||||
if (WARN_ON(!iftd))
|
||||
return;
|
||||
|
||||
/* Check for device HE 6 GHz capability before adding element */
|
||||
if (!iftd->he_6ghz_capa.capa)
|
||||
return;
|
||||
|
||||
cap = le16_to_cpu(iftd->he_6ghz_capa.capa);
|
||||
cap &= ~IEEE80211_HE_6GHZ_CAP_SM_PS;
|
||||
|
||||
|
@ -13266,13 +13266,13 @@ static int nl80211_vendor_cmd(struct sk_buff *skb, struct genl_info *info)
|
||||
if (!wdev_running(wdev))
|
||||
return -ENETDOWN;
|
||||
}
|
||||
|
||||
if (!vcmd->doit)
|
||||
return -EOPNOTSUPP;
|
||||
} else {
|
||||
wdev = NULL;
|
||||
}
|
||||
|
||||
if (!vcmd->doit)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (info->attrs[NL80211_ATTR_VENDOR_DATA]) {
|
||||
data = nla_data(info->attrs[NL80211_ATTR_VENDOR_DATA]);
|
||||
len = nla_len(info->attrs[NL80211_ATTR_VENDOR_DATA]);
|
||||
|
Loading…
Reference in New Issue
Block a user