mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-04 16:15:11 +00:00
staging: rtl8712: rtl871x_mp_ioctl: Move a large data struct onto the heap
Fixes the following W=1 kernel build warning(s): drivers/staging/rtl8712/rtl871x_mp_ioctl.c: In function ‘mp_start_test’: drivers/staging/rtl8712/rtl871x_mp_ioctl.c:204:1: warning: the frame size of 1136 bytes is larger than 1024 bytes [-Wframe-larger-than=] Cc: Larry Finger <Larry.Finger@lwfinger.net> Cc: Florian Schilhabel <florian.c.schilhabel@googlemail.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Zhansaya Bagdauletkyzy <zhansayabagdaulet@gmail.com> Cc: Michael Straube <straube.linux@gmail.com> Cc: WLAN FAE <wlanfae@realtek.com> Cc: linux-staging@lists.linux.dev Signed-off-by: Lee Jones <lee.jones@linaro.org> Link: https://lore.kernel.org/r/20210414181129.1628598-21-lee.jones@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c337ee0014
commit
0b18e5fe60
1 changed files with 17 additions and 12 deletions
|
@ -149,26 +149,30 @@ static int mp_start_test(struct _adapter *padapter)
|
||||||
struct mp_priv *pmppriv = &padapter->mppriv;
|
struct mp_priv *pmppriv = &padapter->mppriv;
|
||||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||||
struct wlan_network *tgt_network = &pmlmepriv->cur_network;
|
struct wlan_network *tgt_network = &pmlmepriv->cur_network;
|
||||||
struct wlan_bssid_ex bssid;
|
struct wlan_bssid_ex *bssid;
|
||||||
struct sta_info *psta;
|
struct sta_info *psta;
|
||||||
unsigned long length;
|
unsigned long length;
|
||||||
unsigned long irqL;
|
unsigned long irqL;
|
||||||
int res = 0;
|
int res = 0;
|
||||||
|
|
||||||
|
bssid = kzalloc(sizeof(*bssid), GFP_KERNEL);
|
||||||
|
if (!bssid)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
/* 3 1. initialize a new struct wlan_bssid_ex */
|
/* 3 1. initialize a new struct wlan_bssid_ex */
|
||||||
memcpy(bssid.MacAddress, pmppriv->network_macaddr, ETH_ALEN);
|
memcpy(bssid->MacAddress, pmppriv->network_macaddr, ETH_ALEN);
|
||||||
bssid.Ssid.SsidLength = 16;
|
bssid->Ssid.SsidLength = 16;
|
||||||
memcpy(bssid.Ssid.Ssid, (unsigned char *)"mp_pseudo_adhoc",
|
memcpy(bssid->Ssid.Ssid, (unsigned char *)"mp_pseudo_adhoc",
|
||||||
bssid.Ssid.SsidLength);
|
bssid->Ssid.SsidLength);
|
||||||
bssid.InfrastructureMode = Ndis802_11IBSS;
|
bssid->InfrastructureMode = Ndis802_11IBSS;
|
||||||
bssid.NetworkTypeInUse = Ndis802_11DS;
|
bssid->NetworkTypeInUse = Ndis802_11DS;
|
||||||
bssid.IELength = 0;
|
bssid->IELength = 0;
|
||||||
length = r8712_get_wlan_bssid_ex_sz(&bssid);
|
length = r8712_get_wlan_bssid_ex_sz(bssid);
|
||||||
if (length % 4) {
|
if (length % 4) {
|
||||||
/*round up to multiple of 4 bytes.*/
|
/*round up to multiple of 4 bytes.*/
|
||||||
bssid.Length = ((length >> 2) + 1) << 2;
|
bssid->Length = ((length >> 2) + 1) << 2;
|
||||||
} else {
|
} else {
|
||||||
bssid.Length = length;
|
bssid->Length = length;
|
||||||
}
|
}
|
||||||
spin_lock_irqsave(&pmlmepriv->lock, irqL);
|
spin_lock_irqsave(&pmlmepriv->lock, irqL);
|
||||||
if (check_fwstate(pmlmepriv, WIFI_MP_STATE))
|
if (check_fwstate(pmlmepriv, WIFI_MP_STATE))
|
||||||
|
@ -185,7 +189,7 @@ static int mp_start_test(struct _adapter *padapter)
|
||||||
tgt_network->network.MacAddress);
|
tgt_network->network.MacAddress);
|
||||||
if (psta)
|
if (psta)
|
||||||
r8712_free_stainfo(padapter, psta);
|
r8712_free_stainfo(padapter, psta);
|
||||||
psta = r8712_alloc_stainfo(&padapter->stapriv, bssid.MacAddress);
|
psta = r8712_alloc_stainfo(&padapter->stapriv, bssid->MacAddress);
|
||||||
if (!psta) {
|
if (!psta) {
|
||||||
res = -ENOMEM;
|
res = -ENOMEM;
|
||||||
goto end_of_mp_start_test;
|
goto end_of_mp_start_test;
|
||||||
|
@ -200,6 +204,7 @@ static int mp_start_test(struct _adapter *padapter)
|
||||||
set_fwstate(pmlmepriv, _FW_LINKED);
|
set_fwstate(pmlmepriv, _FW_LINKED);
|
||||||
end_of_mp_start_test:
|
end_of_mp_start_test:
|
||||||
spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
|
spin_unlock_irqrestore(&pmlmepriv->lock, irqL);
|
||||||
|
kfree(bssid);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue