wireless-drivers: Dynamically allocate struct station_info
Since the addition of the TXQ stats to cfg80211, the station_info struct
has grown to be quite large, which results in warnings when allocated on
the stack. Fix the affected places to do dynamic allocations instead.
Fixes: 52539ca89f
("cfg80211: Expose TXQ stats and parameters to userspace")
Reviewed-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:

committed by
Kalle Valo

parent
4f9fb99001
commit
41bd3d585d
@@ -5498,7 +5498,7 @@ brcmf_notify_connect_status_ap(struct brcmf_cfg80211_info *cfg,
|
||||
static int generation;
|
||||
u32 event = e->event_code;
|
||||
u32 reason = e->reason;
|
||||
struct station_info sinfo;
|
||||
struct station_info *sinfo;
|
||||
|
||||
brcmf_dbg(CONN, "event %s (%u), reason %d\n",
|
||||
brcmf_fweh_event_name(event), event, reason);
|
||||
@@ -5511,16 +5511,22 @@ brcmf_notify_connect_status_ap(struct brcmf_cfg80211_info *cfg,
|
||||
|
||||
if (((event == BRCMF_E_ASSOC_IND) || (event == BRCMF_E_REASSOC_IND)) &&
|
||||
(reason == BRCMF_E_STATUS_SUCCESS)) {
|
||||
memset(&sinfo, 0, sizeof(sinfo));
|
||||
if (!data) {
|
||||
brcmf_err("No IEs present in ASSOC/REASSOC_IND");
|
||||
return -EINVAL;
|
||||
}
|
||||
sinfo.assoc_req_ies = data;
|
||||
sinfo.assoc_req_ies_len = e->datalen;
|
||||
|
||||
sinfo = kzalloc(sizeof(*sinfo), GFP_KERNEL);
|
||||
if (!sinfo)
|
||||
return -ENOMEM;
|
||||
|
||||
sinfo->assoc_req_ies = data;
|
||||
sinfo->assoc_req_ies_len = e->datalen;
|
||||
generation++;
|
||||
sinfo.generation = generation;
|
||||
cfg80211_new_sta(ndev, e->addr, &sinfo, GFP_KERNEL);
|
||||
sinfo->generation = generation;
|
||||
cfg80211_new_sta(ndev, e->addr, sinfo, GFP_KERNEL);
|
||||
|
||||
kfree(sinfo);
|
||||
} else if ((event == BRCMF_E_DISASSOC_IND) ||
|
||||
(event == BRCMF_E_DEAUTH_IND) ||
|
||||
(event == BRCMF_E_DEAUTH)) {
|
||||
|
Reference in New Issue
Block a user