lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Sun, 2 May 2021 22:13:46 +0800
From:   kernel test robot <lkp@...el.com>
To:     Tova Mussai <tova.mussai@...el.com>
Cc:     kbuild-all@...ts.01.org, clang-built-linux@...glegroups.com,
        linux-kernel@...r.kernel.org,
        Johannes Berg <johannes.berg@...el.com>
Subject: net/mac80211/scan.c:653:12: warning: stack frame size of 2176 bytes
 in function '__ieee80211_start_scan'

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   17ae69aba89dbfa2139b7f8024b757ab3cc42f59
commit: c8cb5b854b40f2ce52ccd032fa19750f4181d5fc nl80211/cfg80211: support 6 GHz scanning
date:   7 months ago
config: powerpc64-randconfig-r026-20210430 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 8f5a2a5836cc8e4c1def2bdeb022e7b496623439)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install powerpc64 cross compiling tool for clang build
        # apt-get install binutils-powerpc64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c8cb5b854b40f2ce52ccd032fa19750f4181d5fc
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout c8cb5b854b40f2ce52ccd032fa19750f4181d5fc
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=powerpc64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>

All warnings (new ones prefixed by >>):

   net/mac80211/scan.c:1001:6: warning: stack frame size of 2080 bytes in function 'ieee80211_scan_work' [-Wframe-larger-than=]
   void ieee80211_scan_work(struct work_struct *work)
        ^
>> net/mac80211/scan.c:653:12: warning: stack frame size of 2176 bytes in function '__ieee80211_start_scan' [-Wframe-larger-than=]
   static int __ieee80211_start_scan(struct ieee80211_sub_if_data *sdata,
              ^
   2 warnings generated.


vim +/__ieee80211_start_scan +653 net/mac80211/scan.c

8a690674e0601e Ben Greear        2012-04-17  652  
f3b85252f08158 Johannes Berg     2009-04-23 @653  static int __ieee80211_start_scan(struct ieee80211_sub_if_data *sdata,
f3b85252f08158 Johannes Berg     2009-04-23  654  				  struct cfg80211_scan_request *req)
f3b85252f08158 Johannes Berg     2009-04-23  655  {
f3b85252f08158 Johannes Berg     2009-04-23  656  	struct ieee80211_local *local = sdata->local;
e9da68ddea6030 Johannes Berg     2018-10-18  657  	bool hw_scan = local->ops->hw_scan;
f3b85252f08158 Johannes Berg     2009-04-23  658  	int rc;
f3b85252f08158 Johannes Berg     2009-04-23  659  
e229f844d7223b Stanislaw Gruszka 2010-10-06  660  	lockdep_assert_held(&local->mtx);
e229f844d7223b Stanislaw Gruszka 2010-10-06  661  
dc0c18ed229cdc Aaron Komisar     2019-10-02  662  	if (local->scan_req)
dc0c18ed229cdc Aaron Komisar     2019-10-02  663  		return -EBUSY;
dc0c18ed229cdc Aaron Komisar     2019-10-02  664  
dc0c18ed229cdc Aaron Komisar     2019-10-02  665  	if (!__ieee80211_can_leave_ch(sdata))
f3b85252f08158 Johannes Berg     2009-04-23  666  		return -EBUSY;
f3b85252f08158 Johannes Berg     2009-04-23  667  
133d40f9a22bdf Stanislaw Gruszka 2012-03-28  668  	if (!ieee80211_can_scan(local, sdata)) {
6e7e6213e49568 John W. Linville  2010-02-08  669  		/* wait for the work to finish/time out */
6ea0a69ca21bbd Johannes Berg     2014-11-19  670  		rcu_assign_pointer(local->scan_req, req);
e2fd5dbc1c7031 Johannes Berg     2012-07-06  671  		rcu_assign_pointer(local->scan_sdata, sdata);
c0ce77b8323c1a Johannes Berg     2010-02-03  672  		return 0;
c0ce77b8323c1a Johannes Berg     2010-02-03  673  	}
c0ce77b8323c1a Johannes Berg     2010-02-03  674  
e9da68ddea6030 Johannes Berg     2018-10-18  675   again:
e9da68ddea6030 Johannes Berg     2018-10-18  676  	if (hw_scan) {
f3b85252f08158 Johannes Berg     2009-04-23  677  		u8 *ies;
f3b85252f08158 Johannes Berg     2009-04-23  678  
e4dcbb375cd829 David Spinadel    2014-02-11  679  		local->hw_scan_ies_bufsize = local->scan_ies_len + req->ie_len;
c56ef6725068c0 David Spinadel    2014-02-05  680  
30686bf7f5b3c3 Johannes Berg     2015-06-02  681  		if (ieee80211_hw_check(&local->hw, SINGLE_SCAN_ON_ALL_BANDS)) {
c56ef6725068c0 David Spinadel    2014-02-05  682  			int i, n_bands = 0;
c56ef6725068c0 David Spinadel    2014-02-05  683  			u8 bands_counted = 0;
c56ef6725068c0 David Spinadel    2014-02-05  684  
c56ef6725068c0 David Spinadel    2014-02-05  685  			for (i = 0; i < req->n_channels; i++) {
c56ef6725068c0 David Spinadel    2014-02-05  686  				if (bands_counted & BIT(req->channels[i]->band))
c56ef6725068c0 David Spinadel    2014-02-05  687  					continue;
c56ef6725068c0 David Spinadel    2014-02-05  688  				bands_counted |= BIT(req->channels[i]->band);
c56ef6725068c0 David Spinadel    2014-02-05  689  				n_bands++;
c56ef6725068c0 David Spinadel    2014-02-05  690  			}
c56ef6725068c0 David Spinadel    2014-02-05  691  
c56ef6725068c0 David Spinadel    2014-02-05  692  			local->hw_scan_ies_bufsize *= n_bands;
c56ef6725068c0 David Spinadel    2014-02-05  693  		}
c56ef6725068c0 David Spinadel    2014-02-05  694  
4d36ec58239eec Johannes Berg     2009-10-27  695  		local->hw_scan_req = kmalloc(
4d36ec58239eec Johannes Berg     2009-10-27  696  				sizeof(*local->hw_scan_req) +
4d36ec58239eec Johannes Berg     2009-10-27  697  				req->n_channels * sizeof(req->channels[0]) +
c604b9f219422e Johannes Berg     2012-11-29  698  				local->hw_scan_ies_bufsize, GFP_KERNEL);
4d36ec58239eec Johannes Berg     2009-10-27  699  		if (!local->hw_scan_req)
f3b85252f08158 Johannes Berg     2009-04-23  700  			return -ENOMEM;
f3b85252f08158 Johannes Berg     2009-04-23  701  
c56ef6725068c0 David Spinadel    2014-02-05  702  		local->hw_scan_req->req.ssids = req->ssids;
c56ef6725068c0 David Spinadel    2014-02-05  703  		local->hw_scan_req->req.n_ssids = req->n_ssids;
4d36ec58239eec Johannes Berg     2009-10-27  704  		ies = (u8 *)local->hw_scan_req +
4d36ec58239eec Johannes Berg     2009-10-27  705  			sizeof(*local->hw_scan_req) +
4d36ec58239eec Johannes Berg     2009-10-27  706  			req->n_channels * sizeof(req->channels[0]);
c56ef6725068c0 David Spinadel    2014-02-05  707  		local->hw_scan_req->req.ie = ies;
c56ef6725068c0 David Spinadel    2014-02-05  708  		local->hw_scan_req->req.flags = req->flags;
e345f44f2b7c6a Jouni Malinen     2016-02-26  709  		eth_broadcast_addr(local->hw_scan_req->req.bssid);
7947d3e075cde1 Avraham Stern     2016-07-05  710  		local->hw_scan_req->req.duration = req->duration;
7947d3e075cde1 Avraham Stern     2016-07-05  711  		local->hw_scan_req->req.duration_mandatory =
7947d3e075cde1 Avraham Stern     2016-07-05  712  			req->duration_mandatory;
4d36ec58239eec Johannes Berg     2009-10-27  713  
4d36ec58239eec Johannes Berg     2009-10-27  714  		local->hw_scan_band = 0;
c8cb5b854b40f2 Tova Mussai       2020-09-18  715  		local->hw_scan_req->req.n_6ghz_params = req->n_6ghz_params;
c8cb5b854b40f2 Tova Mussai       2020-09-18  716  		local->hw_scan_req->req.scan_6ghz_params =
c8cb5b854b40f2 Tova Mussai       2020-09-18  717  			req->scan_6ghz_params;
c8cb5b854b40f2 Tova Mussai       2020-09-18  718  		local->hw_scan_req->req.scan_6ghz = req->scan_6ghz;
6e7e6213e49568 John W. Linville  2010-02-08  719  
6e7e6213e49568 John W. Linville  2010-02-08  720  		/*
6e7e6213e49568 John W. Linville  2010-02-08  721  		 * After allocating local->hw_scan_req, we must
6e7e6213e49568 John W. Linville  2010-02-08  722  		 * go through until ieee80211_prep_hw_scan(), so
6e7e6213e49568 John W. Linville  2010-02-08  723  		 * anything that might be changed here and leave
6e7e6213e49568 John W. Linville  2010-02-08  724  		 * this function early must not go after this
6e7e6213e49568 John W. Linville  2010-02-08  725  		 * allocation.
6e7e6213e49568 John W. Linville  2010-02-08  726  		 */
f3b85252f08158 Johannes Berg     2009-04-23  727  	}
f3b85252f08158 Johannes Berg     2009-04-23  728  
6ea0a69ca21bbd Johannes Berg     2014-11-19  729  	rcu_assign_pointer(local->scan_req, req);
e2fd5dbc1c7031 Johannes Berg     2012-07-06  730  	rcu_assign_pointer(local->scan_sdata, sdata);
f3b85252f08158 Johannes Berg     2009-04-23  731  
a344d6778a98e4 Johannes Berg     2014-06-12  732  	if (req->flags & NL80211_SCAN_FLAG_RANDOM_ADDR)
a344d6778a98e4 Johannes Berg     2014-06-12  733  		get_random_mask_addr(local->scan_addr,
a344d6778a98e4 Johannes Berg     2014-06-12  734  				     req->mac_addr,
a344d6778a98e4 Johannes Berg     2014-06-12  735  				     req->mac_addr_mask);
a344d6778a98e4 Johannes Berg     2014-06-12  736  	else
a344d6778a98e4 Johannes Berg     2014-06-12  737  		memcpy(local->scan_addr, sdata->vif.addr, ETH_ALEN);
a344d6778a98e4 Johannes Berg     2014-06-12  738  
e9da68ddea6030 Johannes Berg     2018-10-18  739  	if (hw_scan) {
fbe9c429f19511 Helmut Schaa      2009-07-23  740  		__set_bit(SCAN_HW_SCANNING, &local->scanning);
8a690674e0601e Ben Greear        2012-04-17  741  	} else if ((req->n_channels == 1) &&
675a0b049abf6e Karl Beldan       2013-03-25  742  		   (req->channels[0] == local->_oper_chandef.chan)) {
9b8648704358e4 Johannes Berg     2012-07-26  743  		/*
9b8648704358e4 Johannes Berg     2012-07-26  744  		 * If we are scanning only on the operating channel
9b8648704358e4 Johannes Berg     2012-07-26  745  		 * then we do not need to stop normal activities
8a690674e0601e Ben Greear        2012-04-17  746  		 */
8a690674e0601e Ben Greear        2012-04-17  747  		unsigned long next_delay;
8a690674e0601e Ben Greear        2012-04-17  748  
8a690674e0601e Ben Greear        2012-04-17  749  		__set_bit(SCAN_ONCHANNEL_SCANNING, &local->scanning);
8a690674e0601e Ben Greear        2012-04-17  750  
8a690674e0601e Ben Greear        2012-04-17  751  		ieee80211_recalc_idle(local);
8a690674e0601e Ben Greear        2012-04-17  752  
8a690674e0601e Ben Greear        2012-04-17  753  		/* Notify driver scan is starting, keep order of operations
8a690674e0601e Ben Greear        2012-04-17  754  		 * same as normal software scan, in case that matters. */
a344d6778a98e4 Johannes Berg     2014-06-12  755  		drv_sw_scan_start(local, sdata, local->scan_addr);
8a690674e0601e Ben Greear        2012-04-17  756  
8a690674e0601e Ben Greear        2012-04-17  757  		ieee80211_configure_filter(local); /* accept probe-responses */
8a690674e0601e Ben Greear        2012-04-17  758  
8a690674e0601e Ben Greear        2012-04-17  759  		/* We need to ensure power level is at max for scanning. */
8a690674e0601e Ben Greear        2012-04-17  760  		ieee80211_hw_config(local, 0);
8a690674e0601e Ben Greear        2012-04-17  761  
4e39ccac0d678e Antonio Quartulli 2015-11-21  762  		if ((req->channels[0]->flags & (IEEE80211_CHAN_NO_IR |
4e39ccac0d678e Antonio Quartulli 2015-11-21  763  						IEEE80211_CHAN_RADAR)) ||
6ea0a69ca21bbd Johannes Berg     2014-11-19  764  		    !req->n_ssids) {
8a690674e0601e Ben Greear        2012-04-17  765  			next_delay = IEEE80211_PASSIVE_CHANNEL_TIME;
8a690674e0601e Ben Greear        2012-04-17  766  		} else {
8a690674e0601e Ben Greear        2012-04-17  767  			ieee80211_scan_state_send_probe(local, &next_delay);
8a690674e0601e Ben Greear        2012-04-17  768  			next_delay = IEEE80211_CHANNEL_TIME;
8a690674e0601e Ben Greear        2012-04-17  769  		}
8a690674e0601e Ben Greear        2012-04-17  770  
8a690674e0601e Ben Greear        2012-04-17  771  		/* Now, just wait a bit and we are all done! */
8a690674e0601e Ben Greear        2012-04-17  772  		ieee80211_queue_delayed_work(&local->hw, &local->scan_work,
8a690674e0601e Ben Greear        2012-04-17  773  					     next_delay);
8a690674e0601e Ben Greear        2012-04-17  774  		return 0;
8a690674e0601e Ben Greear        2012-04-17  775  	} else {
8a690674e0601e Ben Greear        2012-04-17  776  		/* Do normal software scan */
fbe9c429f19511 Helmut Schaa      2009-07-23  777  		__set_bit(SCAN_SW_SCANNING, &local->scanning);
8a690674e0601e Ben Greear        2012-04-17  778  	}
6e7e6213e49568 John W. Linville  2010-02-08  779  
5cff20e6c5a659 Johannes Berg     2009-04-29  780  	ieee80211_recalc_idle(local);
f3b85252f08158 Johannes Berg     2009-04-23  781  
e9da68ddea6030 Johannes Berg     2018-10-18  782  	if (hw_scan) {
2ad2274c58ee2d Ilan Peer         2020-05-28  783  		WARN_ON(!ieee80211_prep_hw_scan(sdata));
a060bbfe4ee95d Johannes Berg     2010-04-27  784  		rc = drv_hw_scan(local, sdata, local->hw_scan_req);
a344d6778a98e4 Johannes Berg     2014-06-12  785  	} else {
a344d6778a98e4 Johannes Berg     2014-06-12  786  		rc = ieee80211_start_sw_scan(local, sdata);
a344d6778a98e4 Johannes Berg     2014-06-12  787  	}
f3b85252f08158 Johannes Berg     2009-04-23  788  
f3b85252f08158 Johannes Berg     2009-04-23  789  	if (rc) {
4d36ec58239eec Johannes Berg     2009-10-27  790  		kfree(local->hw_scan_req);
4d36ec58239eec Johannes Berg     2009-10-27  791  		local->hw_scan_req = NULL;
fbe9c429f19511 Helmut Schaa      2009-07-23  792  		local->scanning = 0;
f3b85252f08158 Johannes Berg     2009-04-23  793  
5cff20e6c5a659 Johannes Berg     2009-04-29  794  		ieee80211_recalc_idle(local);
5cff20e6c5a659 Johannes Berg     2009-04-29  795  
f3b85252f08158 Johannes Berg     2009-04-23  796  		local->scan_req = NULL;
0c2bef4621c5fe Monam Agarwal     2014-03-24  797  		RCU_INIT_POINTER(local->scan_sdata, NULL);
f3b85252f08158 Johannes Berg     2009-04-23  798  	}
f3b85252f08158 Johannes Berg     2009-04-23  799  
e9da68ddea6030 Johannes Berg     2018-10-18  800  	if (hw_scan && rc == 1) {
e9da68ddea6030 Johannes Berg     2018-10-18  801  		/*
e9da68ddea6030 Johannes Berg     2018-10-18  802  		 * we can't fall back to software for P2P-GO
e9da68ddea6030 Johannes Berg     2018-10-18  803  		 * as it must update NoA etc.
e9da68ddea6030 Johannes Berg     2018-10-18  804  		 */
e9da68ddea6030 Johannes Berg     2018-10-18  805  		if (ieee80211_vif_type_p2p(&sdata->vif) ==
e9da68ddea6030 Johannes Berg     2018-10-18  806  				NL80211_IFTYPE_P2P_GO)
e9da68ddea6030 Johannes Berg     2018-10-18  807  			return -EOPNOTSUPP;
e9da68ddea6030 Johannes Berg     2018-10-18  808  		hw_scan = false;
e9da68ddea6030 Johannes Berg     2018-10-18  809  		goto again;
e9da68ddea6030 Johannes Berg     2018-10-18  810  	}
e9da68ddea6030 Johannes Berg     2018-10-18  811  
f3b85252f08158 Johannes Berg     2009-04-23  812  	return rc;
f3b85252f08158 Johannes Berg     2009-04-23  813  }
f3b85252f08158 Johannes Berg     2009-04-23  814  

:::::: The code at line 653 was first introduced by commit
:::::: f3b85252f081581a8f257545ed748062dce7798b mac80211: fix scan races and rework scanning

:::::: TO: Johannes Berg <johannes@...solutions.net>
:::::: CC: John W. Linville <linville@...driver.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (28589 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ