Commit f306bde1 authored by Sudip Mukherjee's avatar Sudip Mukherjee Committed by Greg Kroah-Hartman
Browse files

staging: rtl8723bs: reduce stack usage of cfg80211_rtw_scan



The build of xtensa allmodconfig gives warning of:
In function 'cfg80211_rtw_scan':
warning: the frame size of 1040 bytes is larger than 1024 bytes

Allocate memory for ssid dynamically to reduce the stack usage, as an
added benifit we can remove the memset by using kzalloc while allocating
memory.

Signed-off-by: default avatarSudip Mukherjee <sudipm.mukherjee@gmail.com>
Link: https://lore.kernel.org/r/20191018101854.31876-1-sudipm.mukherjee@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 9f665d82
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -1513,7 +1513,7 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy
	int i;
	u8 _status = false;
	int ret = 0;
	struct ndis_802_11_ssid ssid[RTW_SSID_SCAN_AMOUNT];
	struct ndis_802_11_ssid *ssid = NULL;
	struct rtw_ieee80211_channel ch[RTW_CHANNEL_SCAN_AMOUNT];
	u8 survey_times =3;
	u8 survey_times_for_one_ch =6;
@@ -1604,7 +1604,13 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy
		goto check_need_indicate_scan_done;
	}

	memset(ssid, 0, sizeof(struct ndis_802_11_ssid)*RTW_SSID_SCAN_AMOUNT);
	ssid = kzalloc(RTW_SSID_SCAN_AMOUNT * sizeof(struct ndis_802_11_ssid),
		       GFP_KERNEL);
	if (!ssid) {
		ret = -ENOMEM;
		goto check_need_indicate_scan_done;
	}

	/* parsing request ssids, n_ssids */
	for (i = 0; i < request->n_ssids && i < RTW_SSID_SCAN_AMOUNT; i++) {
		#ifdef DEBUG_CFG80211
@@ -1648,6 +1654,7 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy
	}

check_need_indicate_scan_done:
	kfree(ssid);
	if (need_indicate_scan_done)
	{
		rtw_cfg80211_surveydone_event_callback(padapter);