mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:04:41 +01:00
A good number of fixes:
- cfg80211:
- cancel rfkill work appropriately
- fix radiotap parsing to correctly reject field 18
- fix wext (yes...) off-by-one for IGTK key ID
- mac80211:
- fix for mesh NULL pointer dereference
- fix for stack out-of-bounds (2 bytes) write on
specific multi-link action frames
- set default WMM parameters for all links
- mwifiex: check dev_alloc_name() return value correctly
- libertas: fix potential timer use-after-free
- brcmfmac: fix crash on probe failure
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEpeA8sTs3M8SN2hR410qiO8sPaAAFAmme3O0ACgkQ10qiO8sP
aAAhBA//UhqBeXsJd7dfSfGcz4ztzw/m4BDDxwWhJd0wq/ZHVwGvLfOXN1lXG1yR
OsMaSQkT8UGv4NI0V/+7vcKlTvCe0oF0RPyzNtGL8CCYASyM0WbD6EqqpaLKdBIE
Qg/PQ3n7mtPiKHYz9fmL/Yku8uNvHaYJ18HIki9Zn1kgcKvJegf4VqYoMa4m5zK3
ShaNERSsrks2cgBQGwRMxNDfmbn2lr/YnyavFd+RoOdlIjN4FiU7zelgeCKapL6B
URkn/NTp92ga3zcb5b57K3fjHucSKc7Lvf7l/ie5m8tw+Omr7zooBzjvtUzd6lfy
gIFaPUuiKe3Zzq8fUKqgdSivyVOv6VdX6ieKi+mS0CkhfURqQUwNTZPM1Cn5MAkt
lOPwaBpO7iZ2pP56jr29sEXz2komhTZLDv4bssrPvH6si6zToSd+wY10b6hESfTw
wQBxdZl/YqnzngaojQhKTwlQRYATp1h60yEj2SKXpx+DMCtNkAmfxDhAzBCuIaDI
eggswVy97Fn11WuDF3d8nthgyULrAzaK9LIGDCGObHZQYqROJmXtyNyeCmJJHvM7
5/4l61H2nfMIymcSItVo/0ZQKmgiaSeU3t7Arp13uX6jbiWEbmGcdV35fmorwq+u
p9Y3ay8o5yWfpb/XKx7mdurFBrYXTwry7xlaOkUzqCuEhRNRbTU=
=VLWl
-----END PGP SIGNATURE-----
Merge tag 'wireless-2026-02-25' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless
Johannes Berg says:
====================
A good number of fixes:
- cfg80211:
- cancel rfkill work appropriately
- fix radiotap parsing to correctly reject field 18
- fix wext (yes...) off-by-one for IGTK key ID
- mac80211:
- fix for mesh NULL pointer dereference
- fix for stack out-of-bounds (2 bytes) write on
specific multi-link action frames
- set default WMM parameters for all links
- mwifiex: check dev_alloc_name() return value correctly
- libertas: fix potential timer use-after-free
- brcmfmac: fix crash on probe failure
* tag 'wireless-2026-02-25' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless:
wifi: mac80211: fix NULL pointer dereference in mesh_rx_csa_frame()
wifi: mac80211: bounds-check link_id in ieee80211_ml_reconfiguration
wifi: mac80211: set default WMM parameters on all links
wifi: libertas: fix use-after-free in lbs_free_adapter()
wifi: mwifiex: Fix dev_alloc_name() return value check
wifi: brcmfmac: Fix potential kernel oops when probe fails
wifi: radiotap: reject radiotap with unknown bits
wifi: cfg80211: cancel rfkill_block work in wiphy_unregister()
wifi: cfg80211: wext: fix IGTK key ID off-by-one
====================
Link: https://patch.msgid.link/20260225113159.360574-3-johannes@sipsolutions.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
6668c6f2dd
11 changed files with 23 additions and 14 deletions
|
|
@ -951,11 +951,10 @@ int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev)
|
|||
goto out;
|
||||
|
||||
/* try to attach to the target device */
|
||||
sdiodev->bus = brcmf_sdio_probe(sdiodev);
|
||||
if (IS_ERR(sdiodev->bus)) {
|
||||
ret = PTR_ERR(sdiodev->bus);
|
||||
ret = brcmf_sdio_probe(sdiodev);
|
||||
if (ret)
|
||||
goto out;
|
||||
}
|
||||
|
||||
brcmf_sdiod_host_fixup(sdiodev->func2->card->host);
|
||||
out:
|
||||
if (ret)
|
||||
|
|
|
|||
|
|
@ -4445,7 +4445,7 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus)
|
|||
return fwreq;
|
||||
}
|
||||
|
||||
struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
|
||||
int brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
|
||||
{
|
||||
int ret;
|
||||
struct brcmf_sdio *bus;
|
||||
|
|
@ -4551,11 +4551,12 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
|
|||
goto fail;
|
||||
}
|
||||
|
||||
return bus;
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
brcmf_sdio_remove(bus);
|
||||
return ERR_PTR(ret);
|
||||
sdiodev->bus = NULL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Detach and free everything */
|
||||
|
|
|
|||
|
|
@ -358,7 +358,7 @@ void brcmf_sdiod_freezer_uncount(struct brcmf_sdio_dev *sdiodev);
|
|||
int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev);
|
||||
int brcmf_sdiod_remove(struct brcmf_sdio_dev *sdiodev);
|
||||
|
||||
struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev);
|
||||
int brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev);
|
||||
void brcmf_sdio_remove(struct brcmf_sdio *bus);
|
||||
void brcmf_sdio_isr(struct brcmf_sdio *bus, bool in_isr);
|
||||
|
||||
|
|
|
|||
|
|
@ -799,8 +799,8 @@ static void lbs_free_adapter(struct lbs_private *priv)
|
|||
{
|
||||
lbs_free_cmd_buffer(priv);
|
||||
kfifo_free(&priv->event_fifo);
|
||||
timer_delete(&priv->command_timer);
|
||||
timer_delete(&priv->tx_lockup_timer);
|
||||
timer_delete_sync(&priv->command_timer);
|
||||
timer_delete_sync(&priv->tx_lockup_timer);
|
||||
}
|
||||
|
||||
static const struct net_device_ops lbs_netdev_ops = {
|
||||
|
|
|
|||
|
|
@ -3148,7 +3148,7 @@ struct wireless_dev *mwifiex_add_virtual_intf(struct wiphy *wiphy,
|
|||
SET_NETDEV_DEV(dev, adapter->dev);
|
||||
|
||||
ret = dev_alloc_name(dev, name);
|
||||
if (ret)
|
||||
if (ret < 0)
|
||||
goto err_alloc_name;
|
||||
|
||||
priv->dfs_cac_workqueue = alloc_workqueue("MWIFIEX_DFS_CAC-%s",
|
||||
|
|
|
|||
|
|
@ -281,6 +281,7 @@ static int ieee80211_vif_update_links(struct ieee80211_sub_if_data *sdata,
|
|||
struct ieee80211_bss_conf *old[IEEE80211_MLD_MAX_NUM_LINKS];
|
||||
struct ieee80211_link_data *old_data[IEEE80211_MLD_MAX_NUM_LINKS];
|
||||
bool use_deflink = old_links == 0; /* set for error case */
|
||||
bool non_sta = sdata->vif.type != NL80211_IFTYPE_STATION;
|
||||
|
||||
lockdep_assert_wiphy(sdata->local->hw.wiphy);
|
||||
|
||||
|
|
@ -337,6 +338,7 @@ static int ieee80211_vif_update_links(struct ieee80211_sub_if_data *sdata,
|
|||
link = links[link_id];
|
||||
ieee80211_link_init(sdata, link_id, &link->data, &link->conf);
|
||||
ieee80211_link_setup(&link->data);
|
||||
ieee80211_set_wmm_default(&link->data, true, non_sta);
|
||||
}
|
||||
|
||||
if (new_links == 0)
|
||||
|
|
|
|||
|
|
@ -1636,6 +1636,9 @@ static void mesh_rx_csa_frame(struct ieee80211_sub_if_data *sdata,
|
|||
if (!mesh_matches_local(sdata, elems))
|
||||
goto free;
|
||||
|
||||
if (!elems->mesh_chansw_params_ie)
|
||||
goto free;
|
||||
|
||||
ifmsh->chsw_ttl = elems->mesh_chansw_params_ie->mesh_ttl;
|
||||
if (!--ifmsh->chsw_ttl)
|
||||
fwd_csa = false;
|
||||
|
|
|
|||
|
|
@ -7085,6 +7085,9 @@ static void ieee80211_ml_reconfiguration(struct ieee80211_sub_if_data *sdata,
|
|||
control = le16_to_cpu(prof->control);
|
||||
link_id = control & IEEE80211_MLE_STA_RECONF_CONTROL_LINK_ID;
|
||||
|
||||
if (link_id >= IEEE80211_MLD_MAX_NUM_LINKS)
|
||||
continue;
|
||||
|
||||
removed_links |= BIT(link_id);
|
||||
|
||||
/* the MAC address should not be included, but handle it */
|
||||
|
|
|
|||
|
|
@ -1212,6 +1212,7 @@ void wiphy_unregister(struct wiphy *wiphy)
|
|||
/* this has nothing to do now but make sure it's gone */
|
||||
cancel_work_sync(&rdev->wiphy_work);
|
||||
|
||||
cancel_work_sync(&rdev->rfkill_block);
|
||||
cancel_work_sync(&rdev->conn_work);
|
||||
flush_work(&rdev->event_work);
|
||||
cancel_delayed_work_sync(&rdev->dfs_update_channels_wk);
|
||||
|
|
|
|||
|
|
@ -239,14 +239,14 @@ int ieee80211_radiotap_iterator_next(
|
|||
default:
|
||||
if (!iterator->current_namespace ||
|
||||
iterator->_arg_index >= iterator->current_namespace->n_bits) {
|
||||
if (iterator->current_namespace == &radiotap_ns)
|
||||
return -ENOENT;
|
||||
align = 0;
|
||||
} else {
|
||||
align = iterator->current_namespace->align_size[iterator->_arg_index].align;
|
||||
size = iterator->current_namespace->align_size[iterator->_arg_index].size;
|
||||
}
|
||||
if (!align) {
|
||||
if (iterator->current_namespace == &radiotap_ns)
|
||||
return -ENOENT;
|
||||
/* skip all subsequent data */
|
||||
iterator->_arg = iterator->_next_ns_data;
|
||||
/* give up on this namespace */
|
||||
|
|
|
|||
|
|
@ -684,7 +684,7 @@ static int cfg80211_wext_siwencodeext(struct net_device *dev,
|
|||
|
||||
idx = erq->flags & IW_ENCODE_INDEX;
|
||||
if (cipher == WLAN_CIPHER_SUITE_AES_CMAC) {
|
||||
if (idx < 4 || idx > 5) {
|
||||
if (idx < 5 || idx > 6) {
|
||||
idx = wdev->wext.default_mgmt_key;
|
||||
if (idx < 0)
|
||||
return -EINVAL;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue