diff options
author | Lee Jones <lee.jones@linaro.org> | 2021-04-14 19:10:52 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-05-10 11:19:24 +0200 |
commit | 0b18e5fe6008c163f2d245724fc6db88158c3eb3 (patch) | |
tree | 436dcfefab003eb6897ae790c3ad3184664b3bb6 | |
parent | c337ee00146aa5b1ad5509df796bb00ac51fd90e (diff) | |
download | linux-stable-0b18e5fe6008c163f2d245724fc6db88158c3eb3.tar.gz linux-stable-0b18e5fe6008c163f2d245724fc6db88158c3eb3.tar.bz2 linux-stable-0b18e5fe6008c163f2d245724fc6db88158c3eb3.zip |
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>
-rw-r--r-- | drivers/staging/rtl8712/rtl871x_mp_ioctl.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/drivers/staging/rtl8712/rtl871x_mp_ioctl.c b/drivers/staging/rtl8712/rtl871x_mp_ioctl.c index 31414a960c9e..adbeb46770d7 100644 --- a/drivers/staging/rtl8712/rtl871x_mp_ioctl.c +++ b/drivers/staging/rtl8712/rtl871x_mp_ioctl.c @@ -149,26 +149,30 @@ static int mp_start_test(struct _adapter *padapter) struct mp_priv *pmppriv = &padapter->mppriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct wlan_network *tgt_network = &pmlmepriv->cur_network; - struct wlan_bssid_ex bssid; + struct wlan_bssid_ex *bssid; struct sta_info *psta; unsigned long length; unsigned long irqL; int res = 0; + bssid = kzalloc(sizeof(*bssid), GFP_KERNEL); + if (!bssid) + return -ENOMEM; + /* 3 1. initialize a new struct wlan_bssid_ex */ - memcpy(bssid.MacAddress, pmppriv->network_macaddr, ETH_ALEN); - bssid.Ssid.SsidLength = 16; - memcpy(bssid.Ssid.Ssid, (unsigned char *)"mp_pseudo_adhoc", - bssid.Ssid.SsidLength); - bssid.InfrastructureMode = Ndis802_11IBSS; - bssid.NetworkTypeInUse = Ndis802_11DS; - bssid.IELength = 0; - length = r8712_get_wlan_bssid_ex_sz(&bssid); + memcpy(bssid->MacAddress, pmppriv->network_macaddr, ETH_ALEN); + bssid->Ssid.SsidLength = 16; + memcpy(bssid->Ssid.Ssid, (unsigned char *)"mp_pseudo_adhoc", + bssid->Ssid.SsidLength); + bssid->InfrastructureMode = Ndis802_11IBSS; + bssid->NetworkTypeInUse = Ndis802_11DS; + bssid->IELength = 0; + length = r8712_get_wlan_bssid_ex_sz(bssid); if (length % 4) { /*round up to multiple of 4 bytes.*/ - bssid.Length = ((length >> 2) + 1) << 2; + bssid->Length = ((length >> 2) + 1) << 2; } else { - bssid.Length = length; + bssid->Length = length; } spin_lock_irqsave(&pmlmepriv->lock, irqL); if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) @@ -185,7 +189,7 @@ static int mp_start_test(struct _adapter *padapter) tgt_network->network.MacAddress); if (psta) r8712_free_stainfo(padapter, psta); - psta = r8712_alloc_stainfo(&padapter->stapriv, bssid.MacAddress); + psta = r8712_alloc_stainfo(&padapter->stapriv, bssid->MacAddress); if (!psta) { res = -ENOMEM; goto end_of_mp_start_test; @@ -200,6 +204,7 @@ static int mp_start_test(struct _adapter *padapter) set_fwstate(pmlmepriv, _FW_LINKED); end_of_mp_start_test: spin_unlock_irqrestore(&pmlmepriv->lock, irqL); + kfree(bssid); return res; } |