We have a handful of fixes:
* ignore bad CW parameters if we aren't using them, instead of warning * fix operation (and then build) with the new netlink vendor command policy requirement * fix a memory leak in an error path when setting beacons -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEH1e1rEeCd0AIMq6MB8qZga/fl8QFAl0zdC8ACgkQB8qZga/f l8REbQ/+KbAgLA+0i+aVFJCqCkaHKHad4ncU8ntb6fD3i/rhyuQad51ePa9hjWKT UTo7Ta6owhdwXR40Mk8LH/4B9JOZGTzVlqmLdEvWyG6iaA98ipx9y/xOKzBlBBUX qf2Ry07rS5rIfSzWBVshnCakjXyrirPtiUNBxkwPnWWna6OCMXAn5K1FLIddazAa wc9sJ/lEDaF4d/5XvZaYZ74Arw4ETOCgLzvSvlzJofclNqdXxJ4ZvuwJafbw+U8/ z3o3uo+fH6E26D3hUFitzH3mFiEGVpG08l1K688RYqmdz5uPWXXMZWClYPpD0HAA zEJMpsTXS8b1fwFh93uRGUTmufJAdx/FTWYNIJ9eR7r1UPMhZHQ5LRL+dq2pSJeL wsQWnD++RENni0CVN7bu0H9xaSiDo7eKRQxKm1pci+SUdny4YOT8+ADCCADp8eUM e4afcVLepFh4NMEyrBPbtmeudiW5ZLyNJi7mOvQMP4TVkiYjihxifTrQivIog9uL AEbFjvCVH6zrPDxFVd09UmdoHtckmLZoj2tRG5sERWzN4qrMln/vbubITQjJ9t88 H0W7ft2Tuhy36D68o2b0SAWzhl7fxWDNkbxblpoJZEywr0X/IDeIHIhA3xL1iTRC XjEBsXuxmmjEQTX5QjPF3CmidZFe3uV1atU7vNDz4v+MaGOxxKo= =BXF3 -----END PGP SIGNATURE----- Merge tag 'mac80211-for-davem-2019-07-20' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211 Johannes Berg says: ==================== We have a handful of fixes: * ignore bad CW parameters if we aren't using them, instead of warning * fix operation (and then build) with the new netlink vendor command policy requirement * fix a memory leak in an error path when setting beacons ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
953ba0a638
@ -177,6 +177,7 @@ static const struct wiphy_vendor_command wil_nl80211_vendor_commands[] = {
|
||||
.info.subcmd = QCA_NL80211_VENDOR_SUBCMD_DMG_RF_GET_SECTOR_CFG,
|
||||
.flags = WIPHY_VENDOR_CMD_NEED_WDEV |
|
||||
WIPHY_VENDOR_CMD_NEED_RUNNING,
|
||||
.policy = wil_rf_sector_policy,
|
||||
.doit = wil_rf_sector_get_cfg
|
||||
},
|
||||
{
|
||||
@ -184,6 +185,7 @@ static const struct wiphy_vendor_command wil_nl80211_vendor_commands[] = {
|
||||
.info.subcmd = QCA_NL80211_VENDOR_SUBCMD_DMG_RF_SET_SECTOR_CFG,
|
||||
.flags = WIPHY_VENDOR_CMD_NEED_WDEV |
|
||||
WIPHY_VENDOR_CMD_NEED_RUNNING,
|
||||
.policy = wil_rf_sector_policy,
|
||||
.doit = wil_rf_sector_set_cfg
|
||||
},
|
||||
{
|
||||
@ -192,6 +194,7 @@ static const struct wiphy_vendor_command wil_nl80211_vendor_commands[] = {
|
||||
QCA_NL80211_VENDOR_SUBCMD_DMG_RF_GET_SELECTED_SECTOR,
|
||||
.flags = WIPHY_VENDOR_CMD_NEED_WDEV |
|
||||
WIPHY_VENDOR_CMD_NEED_RUNNING,
|
||||
.policy = wil_rf_sector_policy,
|
||||
.doit = wil_rf_sector_get_selected
|
||||
},
|
||||
{
|
||||
@ -200,6 +203,7 @@ static const struct wiphy_vendor_command wil_nl80211_vendor_commands[] = {
|
||||
QCA_NL80211_VENDOR_SUBCMD_DMG_RF_SET_SELECTED_SECTOR,
|
||||
.flags = WIPHY_VENDOR_CMD_NEED_WDEV |
|
||||
WIPHY_VENDOR_CMD_NEED_RUNNING,
|
||||
.policy = wil_rf_sector_policy,
|
||||
.doit = wil_rf_sector_set_selected
|
||||
},
|
||||
};
|
||||
|
@ -112,6 +112,7 @@ const struct wiphy_vendor_command brcmf_vendor_cmds[] = {
|
||||
},
|
||||
.flags = WIPHY_VENDOR_CMD_NEED_WDEV |
|
||||
WIPHY_VENDOR_CMD_NEED_NETDEV,
|
||||
.policy = VENDOR_CMD_RAW_DATA,
|
||||
.doit = brcmf_cfg80211_vndr_cmds_dcmd_handler
|
||||
},
|
||||
};
|
||||
|
@ -163,6 +163,7 @@ static const struct wiphy_vendor_command wlcore_vendor_commands[] = {
|
||||
.flags = WIPHY_VENDOR_CMD_NEED_NETDEV |
|
||||
WIPHY_VENDOR_CMD_NEED_RUNNING,
|
||||
.doit = wlcore_vendor_cmd_smart_config_start,
|
||||
.policy = wlcore_vendor_attr_policy,
|
||||
},
|
||||
{
|
||||
.info = {
|
||||
@ -172,6 +173,7 @@ static const struct wiphy_vendor_command wlcore_vendor_commands[] = {
|
||||
.flags = WIPHY_VENDOR_CMD_NEED_NETDEV |
|
||||
WIPHY_VENDOR_CMD_NEED_RUNNING,
|
||||
.doit = wlcore_vendor_cmd_smart_config_stop,
|
||||
.policy = wlcore_vendor_attr_policy,
|
||||
},
|
||||
{
|
||||
.info = {
|
||||
@ -181,6 +183,7 @@ static const struct wiphy_vendor_command wlcore_vendor_commands[] = {
|
||||
.flags = WIPHY_VENDOR_CMD_NEED_NETDEV |
|
||||
WIPHY_VENDOR_CMD_NEED_RUNNING,
|
||||
.doit = wlcore_vendor_cmd_smart_config_set_group_key,
|
||||
.policy = wlcore_vendor_attr_policy,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -4170,7 +4170,7 @@ struct sta_opmode_info {
|
||||
u8 rx_nss;
|
||||
};
|
||||
|
||||
#define VENDOR_CMD_RAW_DATA ((const struct nla_policy *)ERR_PTR(-ENODATA))
|
||||
#define VENDOR_CMD_RAW_DATA ((const struct nla_policy *)(long)(-ENODATA))
|
||||
|
||||
/**
|
||||
* struct wiphy_vendor_command - vendor command definition
|
||||
|
@ -2863,7 +2863,7 @@ enum nl80211_attrs {
|
||||
#define NL80211_HT_CAPABILITY_LEN 26
|
||||
#define NL80211_VHT_CAPABILITY_LEN 12
|
||||
#define NL80211_HE_MIN_CAPABILITY_LEN 16
|
||||
#define NL80211_HE_MAX_CAPABILITY_LEN 51
|
||||
#define NL80211_HE_MAX_CAPABILITY_LEN 54
|
||||
#define NL80211_MAX_NR_CIPHER_SUITES 5
|
||||
#define NL80211_MAX_NR_AKM_SUITES 2
|
||||
|
||||
|
@ -936,8 +936,10 @@ static int ieee80211_assign_beacon(struct ieee80211_sub_if_data *sdata,
|
||||
|
||||
err = ieee80211_set_probe_resp(sdata, params->probe_resp,
|
||||
params->probe_resp_len, csa);
|
||||
if (err < 0)
|
||||
if (err < 0) {
|
||||
kfree(new);
|
||||
return err;
|
||||
}
|
||||
if (err == 0)
|
||||
changed |= BSS_CHANGED_AP_PROBE_RESP;
|
||||
|
||||
@ -949,8 +951,10 @@ static int ieee80211_assign_beacon(struct ieee80211_sub_if_data *sdata,
|
||||
params->civicloc,
|
||||
params->civicloc_len);
|
||||
|
||||
if (err < 0)
|
||||
if (err < 0) {
|
||||
kfree(new);
|
||||
return err;
|
||||
}
|
||||
|
||||
changed |= BSS_CHANGED_FTM_RESPONDER;
|
||||
}
|
||||
|
@ -187,11 +187,16 @@ int drv_conf_tx(struct ieee80211_local *local,
|
||||
if (!check_sdata_in_driver(sdata))
|
||||
return -EIO;
|
||||
|
||||
if (WARN_ONCE(params->cw_min == 0 ||
|
||||
params->cw_min > params->cw_max,
|
||||
"%s: invalid CW_min/CW_max: %d/%d\n",
|
||||
sdata->name, params->cw_min, params->cw_max))
|
||||
if (params->cw_min == 0 || params->cw_min > params->cw_max) {
|
||||
/*
|
||||
* If we can't configure hardware anyway, don't warn. We may
|
||||
* never have initialized the CW parameters.
|
||||
*/
|
||||
WARN_ONCE(local->ops->conf_tx,
|
||||
"%s: invalid CW_min/CW_max: %d/%d\n",
|
||||
sdata->name, params->cw_min, params->cw_max);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
trace_drv_conf_tx(local, sdata, ac, params);
|
||||
if (local->ops->conf_tx)
|
||||
|
Loading…
x
Reference in New Issue
Block a user