All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-stable-rc:linux-4.19.y 6833/9999] drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block
@ 2020-09-23  8:52 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2020-09-23  8:52 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 18065 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
head:   e864f43593ccf9180c61738abdf1c1dde091367d
commit: 5ee7911e8e17afb4541096c6e98ffa61190338b3 [6833/9999] iwlwifi: mvm: avoid possible access out of array.
:::::: branch date: 3 months ago
:::::: commit date: 8 months ago
config: i386-randconfig-s031-20200921 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.2-201-g24bdaac6-dirty
        git checkout 5ee7911e8e17afb4541096c6e98ffa61190338b3
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 

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


sparse warnings: (new ones prefixed by >>)

   drivers/net/wireless/intel/iwlwifi/mvm/sta.c: note: in included file (through drivers/net/wireless/intel/iwlwifi/mvm/..//fw/img.h, drivers/net/wireless/intel/iwlwifi/mvm/..//iwl-trans.h, ...):
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:286:19: sparse: sparse: mixed bitwiseness
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:405:19: sparse: sparse: mixed bitwiseness
>> drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block
   In file included from drivers/net/wireless/intel/iwlwifi/mvm/../iwl-trans.h:76,
                    from drivers/net/wireless/intel/iwlwifi/mvm/mvm.h:83,
                    from drivers/net/wireless/intel/iwlwifi/mvm/sta.c:71:
   drivers/net/wireless/intel/iwlwifi/mvm/../iwl-config.h:472:36: warning: 'iwl_csr_v2' defined but not used [-Wunused-const-variable=]
     472 | static const struct iwl_csr_params iwl_csr_v2 = {
         |                                    ^~~~~~~~~~
   drivers/net/wireless/intel/iwlwifi/mvm/../iwl-config.h:457:36: warning: 'iwl_csr_v1' defined but not used [-Wunused-const-variable=]
     457 | static const struct iwl_csr_params iwl_csr_v1 = {
         |                                    ^~~~~~~~~~

# https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=5ee7911e8e17afb4541096c6e98ffa61190338b3
git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git fetch --no-tags linux-stable-rc linux-4.19.y
git checkout 5ee7911e8e17afb4541096c6e98ffa61190338b3
vim +/iwl_mvm_sta_tx_agg_start +2573 drivers/net/wireless/intel/iwlwifi/mvm/sta.c

3e56eadfb6a1f2 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-02-15  2458  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2459  int iwl_mvm_sta_tx_agg_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2460  			     struct ieee80211_sta *sta, u16 tid, u16 *ssn)
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2461  {
5b577a90fb3d86 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-11-14  2462  	struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2463  	struct iwl_mvm_tid_data *tid_data;
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2464  	u16 normalized_ssn;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2465  	u16 txq_id;
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2466  	int ret;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2467  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2468  	if (WARN_ON_ONCE(tid >= IWL_MAX_TID_COUNT))
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2469  		return -EINVAL;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2470  
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2471  	if (mvmsta->tid_data[tid].state != IWL_AGG_QUEUED &&
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2472  	    mvmsta->tid_data[tid].state != IWL_AGG_OFF) {
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2473  		IWL_ERR(mvm,
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2474  			"Start AGG when state is not IWL_AGG_QUEUED or IWL_AGG_OFF %d!\n",
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2475  			mvmsta->tid_data[tid].state);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2476  		return -ENXIO;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2477  	}
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2478  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2479  	lockdep_assert_held(&mvm->mutex);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2480  
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2481  	if (mvmsta->tid_data[tid].txq_id == IWL_MVM_INVALID_QUEUE &&
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2482  	    iwl_mvm_has_new_tx_api(mvm)) {
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2483  		u8 ac = tid_to_mac80211_ac[tid];
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2484  
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2485  		ret = iwl_mvm_sta_alloc_queue_tvqm(mvm, sta, ac, tid);
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2486  		if (ret)
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2487  			return ret;
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2488  	}
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2489  
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2490  	spin_lock_bh(&mvmsta->lock);
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2491  
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2492  	/* possible race condition - we entered D0i3 while starting agg */
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2493  	if (test_bit(IWL_MVM_STATUS_IN_D0I3, &mvm->status)) {
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2494  		spin_unlock_bh(&mvmsta->lock);
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2495  		IWL_ERR(mvm, "Entered D0i3 while starting Tx agg\n");
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2496  		return -EIO;
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2497  	}
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2498  
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2499  	spin_lock(&mvm->queue_info_lock);
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2500  
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2501  	/*
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2502  	 * Note the possible cases:
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2503  	 *  1. An enabled TXQ - TXQ needs to become agg'ed
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2504  	 *  2. The TXQ hasn't yet been enabled, so find a free one and mark
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2505  	 *	it as reserved
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2506  	 */
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2507  	txq_id = mvmsta->tid_data[tid].txq_id;
34e10860ae8dc8 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Sara Sharon         2017-02-23  2508  	if (txq_id == IWL_MVM_INVALID_QUEUE) {
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2509  		ret = iwl_mvm_find_free_queue(mvm, mvmsta->sta_id,
c8f54701bdbfcc drivers/net/wireless/intel/iwlwifi/mvm/sta.c Johannes Berg       2017-06-19  2510  					      IWL_MVM_DQA_MIN_DATA_QUEUE,
c8f54701bdbfcc drivers/net/wireless/intel/iwlwifi/mvm/sta.c Johannes Berg       2017-06-19  2511  					      IWL_MVM_DQA_MAX_DATA_QUEUE);
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2512  		if (ret < 0) {
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2513  			IWL_ERR(mvm, "Failed to allocate agg queue\n");
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2514  			goto release_locks;
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2515  		}
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2516  
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2517  		txq_id = ret;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2518  
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2519  		/* TXQ hasn't yet been enabled, so mark it only as reserved */
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2520  		mvm->queue_info[txq_id].status = IWL_MVM_QUEUE_RESERVED;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2521  	} else if (WARN_ON(txq_id >= IWL_MAX_HW_QUEUES)) {
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2522  		ret = -ENXIO;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2523  		IWL_ERR(mvm, "tid_id %d out of range (0, %d)!\n",
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2524  			tid, IWL_MAX_HW_QUEUES - 1);
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2525  		goto out;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2526  
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2527  	} else if (unlikely(mvm->queue_info[txq_id].status ==
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2528  			    IWL_MVM_QUEUE_SHARED)) {
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2529  		ret = -ENXIO;
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2530  		IWL_DEBUG_TX_QUEUES(mvm,
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2531  				    "Can't start tid %d agg on shared queue!\n",
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2532  				    tid);
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2533  		goto release_locks;
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2534  	}
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2535  
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2536  	spin_unlock(&mvm->queue_info_lock);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2537  
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2538  	IWL_DEBUG_TX_QUEUES(mvm,
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2539  			    "AGG for tid %d will be on queue #%d\n",
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2540  			    tid, txq_id);
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2541  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2542  	tid_data = &mvmsta->tid_data[tid];
9a886586c82aa0 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-02-15  2543  	tid_data->ssn = IEEE80211_SEQ_TO_SN(tid_data->seq_number);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2544  	tid_data->txq_id = txq_id;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2545  	*ssn = tid_data->ssn;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2546  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2547  	IWL_DEBUG_TX_QUEUES(mvm,
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2548  			    "Start AGG: sta %d tid %d queue %d - ssn = %d, next_recl = %d\n",
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2549  			    mvmsta->sta_id, tid, txq_id, tid_data->ssn,
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2550  			    tid_data->next_reclaimed);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2551  
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2552  	/*
2f7a3863191afc drivers/net/wireless/intel/iwlwifi/mvm/sta.c Luca Coelho         2017-11-15  2553  	 * In 22000 HW, the next_reclaimed index is only 8 bit, so we'll need
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2554  	 * to align the wrap around of ssn so we compare relevant values.
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2555  	 */
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2556  	normalized_ssn = tid_data->ssn;
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2557  	if (mvm->trans->cfg->gen2)
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2558  		normalized_ssn &= 0xff;
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2559  
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2560  	if (normalized_ssn == tid_data->next_reclaimed) {
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2561  		tid_data->state = IWL_AGG_STARTING;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2562  		ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2563  	} else {
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2564  		tid_data->state = IWL_EMPTYING_HW_QUEUE_ADDBA;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2565  	}
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2566  
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2567  	ret = 0;
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2568  	goto out;
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2569  
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2570  release_locks:
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2571  	spin_unlock(&mvm->queue_info_lock);
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2572  out:
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24 @2573  	spin_unlock_bh(&mvmsta->lock);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2574  
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2575  	return ret;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2576  }
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2577  

:::::: The code at line 2573 was first introduced by commit
:::::: 8ca151b568b67a7b72dcfc6ee6ea7c107ddd795c iwlwifi: add the MVM driver

:::::: TO: Johannes Berg <johannes.berg@intel.com>
:::::: CC: Johannes Berg <johannes.berg@intel.com>

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28353 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [linux-stable-rc:linux-4.19.y 6833/9999] drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block
@ 2020-12-12 19:02 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2020-12-12 19:02 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 18261 bytes --]

CC: kbuild-all(a)lists.01.org
TO: Mordechay Goodstein <mordechay.goodstein@intel.com>
CC: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
CC: Luca Coelho <luciano.coelho@intel.com>
CC: Sasha Levin <alexander.levin@microsoft.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
head:   e864f43593ccf9180c61738abdf1c1dde091367d
commit: 5ee7911e8e17afb4541096c6e98ffa61190338b3 [6833/9999] iwlwifi: mvm: avoid possible access out of array.
:::::: branch date: 
:::::: commit date: 11 months ago
config: i386-randconfig-s002-20201213 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-179-ga00755aa-dirty
        # https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=5ee7911e8e17afb4541096c6e98ffa61190338b3
        git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
        git fetch --no-tags linux-stable-rc linux-4.19.y
        git checkout 5ee7911e8e17afb4541096c6e98ffa61190338b3
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 

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


"sparse warnings: (new ones prefixed by >>)"
   drivers/net/wireless/intel/iwlwifi/mvm/sta.c: note: in included file (through drivers/net/wireless/intel/iwlwifi/mvm/..//fw/img.h, drivers/net/wireless/intel/iwlwifi/mvm/..//iwl-trans.h, ...):
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:286:19: sparse: sparse: mixed bitwiseness
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:405:19: sparse: sparse: mixed bitwiseness
>> drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block
   In file included from drivers/net/wireless/intel/iwlwifi/mvm/../iwl-trans.h:76,
                    from drivers/net/wireless/intel/iwlwifi/mvm/mvm.h:83,
                    from drivers/net/wireless/intel/iwlwifi/mvm/sta.c:71:
   drivers/net/wireless/intel/iwlwifi/mvm/../iwl-config.h:472:36: warning: 'iwl_csr_v2' defined but not used [-Wunused-const-variable=]
     472 | static const struct iwl_csr_params iwl_csr_v2 = {
         |                                    ^~~~~~~~~~
   drivers/net/wireless/intel/iwlwifi/mvm/../iwl-config.h:457:36: warning: 'iwl_csr_v1' defined but not used [-Wunused-const-variable=]
     457 | static const struct iwl_csr_params iwl_csr_v1 = {
         |                                    ^~~~~~~~~~

vim +/iwl_mvm_sta_tx_agg_start +2573 drivers/net/wireless/intel/iwlwifi/mvm/sta.c

3e56eadfb6a1f2 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-02-15  2458  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2459  int iwl_mvm_sta_tx_agg_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2460  			     struct ieee80211_sta *sta, u16 tid, u16 *ssn)
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2461  {
5b577a90fb3d86 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-11-14  2462  	struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2463  	struct iwl_mvm_tid_data *tid_data;
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2464  	u16 normalized_ssn;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2465  	u16 txq_id;
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2466  	int ret;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2467  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2468  	if (WARN_ON_ONCE(tid >= IWL_MAX_TID_COUNT))
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2469  		return -EINVAL;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2470  
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2471  	if (mvmsta->tid_data[tid].state != IWL_AGG_QUEUED &&
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2472  	    mvmsta->tid_data[tid].state != IWL_AGG_OFF) {
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2473  		IWL_ERR(mvm,
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2474  			"Start AGG when state is not IWL_AGG_QUEUED or IWL_AGG_OFF %d!\n",
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2475  			mvmsta->tid_data[tid].state);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2476  		return -ENXIO;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2477  	}
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2478  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2479  	lockdep_assert_held(&mvm->mutex);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2480  
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2481  	if (mvmsta->tid_data[tid].txq_id == IWL_MVM_INVALID_QUEUE &&
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2482  	    iwl_mvm_has_new_tx_api(mvm)) {
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2483  		u8 ac = tid_to_mac80211_ac[tid];
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2484  
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2485  		ret = iwl_mvm_sta_alloc_queue_tvqm(mvm, sta, ac, tid);
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2486  		if (ret)
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2487  			return ret;
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2488  	}
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2489  
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2490  	spin_lock_bh(&mvmsta->lock);
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2491  
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2492  	/* possible race condition - we entered D0i3 while starting agg */
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2493  	if (test_bit(IWL_MVM_STATUS_IN_D0I3, &mvm->status)) {
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2494  		spin_unlock_bh(&mvmsta->lock);
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2495  		IWL_ERR(mvm, "Entered D0i3 while starting Tx agg\n");
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2496  		return -EIO;
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2497  	}
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2498  
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2499  	spin_lock(&mvm->queue_info_lock);
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2500  
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2501  	/*
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2502  	 * Note the possible cases:
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2503  	 *  1. An enabled TXQ - TXQ needs to become agg'ed
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2504  	 *  2. The TXQ hasn't yet been enabled, so find a free one and mark
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2505  	 *	it as reserved
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2506  	 */
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2507  	txq_id = mvmsta->tid_data[tid].txq_id;
34e10860ae8dc8 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Sara Sharon         2017-02-23  2508  	if (txq_id == IWL_MVM_INVALID_QUEUE) {
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2509  		ret = iwl_mvm_find_free_queue(mvm, mvmsta->sta_id,
c8f54701bdbfcc drivers/net/wireless/intel/iwlwifi/mvm/sta.c Johannes Berg       2017-06-19  2510  					      IWL_MVM_DQA_MIN_DATA_QUEUE,
c8f54701bdbfcc drivers/net/wireless/intel/iwlwifi/mvm/sta.c Johannes Berg       2017-06-19  2511  					      IWL_MVM_DQA_MAX_DATA_QUEUE);
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2512  		if (ret < 0) {
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2513  			IWL_ERR(mvm, "Failed to allocate agg queue\n");
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2514  			goto release_locks;
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2515  		}
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2516  
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2517  		txq_id = ret;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2518  
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2519  		/* TXQ hasn't yet been enabled, so mark it only as reserved */
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2520  		mvm->queue_info[txq_id].status = IWL_MVM_QUEUE_RESERVED;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2521  	} else if (WARN_ON(txq_id >= IWL_MAX_HW_QUEUES)) {
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2522  		ret = -ENXIO;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2523  		IWL_ERR(mvm, "tid_id %d out of range (0, %d)!\n",
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2524  			tid, IWL_MAX_HW_QUEUES - 1);
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2525  		goto out;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2526  
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2527  	} else if (unlikely(mvm->queue_info[txq_id].status ==
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2528  			    IWL_MVM_QUEUE_SHARED)) {
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2529  		ret = -ENXIO;
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2530  		IWL_DEBUG_TX_QUEUES(mvm,
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2531  				    "Can't start tid %d agg on shared queue!\n",
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2532  				    tid);
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2533  		goto release_locks;
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2534  	}
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2535  
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2536  	spin_unlock(&mvm->queue_info_lock);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2537  
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2538  	IWL_DEBUG_TX_QUEUES(mvm,
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2539  			    "AGG for tid %d will be on queue #%d\n",
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2540  			    tid, txq_id);
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2541  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2542  	tid_data = &mvmsta->tid_data[tid];
9a886586c82aa0 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-02-15  2543  	tid_data->ssn = IEEE80211_SEQ_TO_SN(tid_data->seq_number);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2544  	tid_data->txq_id = txq_id;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2545  	*ssn = tid_data->ssn;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2546  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2547  	IWL_DEBUG_TX_QUEUES(mvm,
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2548  			    "Start AGG: sta %d tid %d queue %d - ssn = %d, next_recl = %d\n",
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2549  			    mvmsta->sta_id, tid, txq_id, tid_data->ssn,
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2550  			    tid_data->next_reclaimed);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2551  
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2552  	/*
2f7a3863191afc drivers/net/wireless/intel/iwlwifi/mvm/sta.c Luca Coelho         2017-11-15  2553  	 * In 22000 HW, the next_reclaimed index is only 8 bit, so we'll need
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2554  	 * to align the wrap around of ssn so we compare relevant values.
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2555  	 */
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2556  	normalized_ssn = tid_data->ssn;
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2557  	if (mvm->trans->cfg->gen2)
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2558  		normalized_ssn &= 0xff;
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2559  
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2560  	if (normalized_ssn == tid_data->next_reclaimed) {
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2561  		tid_data->state = IWL_AGG_STARTING;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2562  		ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2563  	} else {
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2564  		tid_data->state = IWL_EMPTYING_HW_QUEUE_ADDBA;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2565  	}
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2566  
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2567  	ret = 0;
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2568  	goto out;
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2569  
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2570  release_locks:
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2571  	spin_unlock(&mvm->queue_info_lock);
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2572  out:
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24 @2573  	spin_unlock_bh(&mvmsta->lock);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2574  
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2575  	return ret;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2576  }
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2577  

:::::: The code at line 2573 was first introduced by commit
:::::: 8ca151b568b67a7b72dcfc6ee6ea7c107ddd795c iwlwifi: add the MVM driver

:::::: TO: Johannes Berg <johannes.berg@intel.com>
:::::: CC: Johannes Berg <johannes.berg@intel.com>

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 33943 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [linux-stable-rc:linux-4.19.y 6833/9999] drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block
@ 2020-11-19  0:47 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2020-11-19  0:47 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 18325 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
head:   e864f43593ccf9180c61738abdf1c1dde091367d
commit: 5ee7911e8e17afb4541096c6e98ffa61190338b3 [6833/9999] iwlwifi: mvm: avoid possible access out of array.
:::::: branch date: 5 months ago
:::::: commit date: 10 months ago
config: x86_64-randconfig-s022-20201118 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-113-g90be5636-dirty
        # https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=5ee7911e8e17afb4541096c6e98ffa61190338b3
        git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
        git fetch --no-tags linux-stable-rc linux-4.19.y
        git checkout 5ee7911e8e17afb4541096c6e98ffa61190338b3
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64 

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


"sparse warnings: (new ones prefixed by >>)"
   drivers/net/wireless/intel/iwlwifi/mvm/sta.c: note: in included file (through drivers/net/wireless/intel/iwlwifi/mvm/..//fw/img.h, drivers/net/wireless/intel/iwlwifi/mvm/..//iwl-trans.h, ...):
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:286:19: sparse: sparse: mixed bitwiseness
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:405:19: sparse: sparse: mixed bitwiseness
>> drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block
   In file included from drivers/net/wireless/intel/iwlwifi/mvm/../iwl-trans.h:76,
                    from drivers/net/wireless/intel/iwlwifi/mvm/mvm.h:83,
                    from drivers/net/wireless/intel/iwlwifi/mvm/sta.c:71:
   drivers/net/wireless/intel/iwlwifi/mvm/../iwl-config.h:472:36: warning: 'iwl_csr_v2' defined but not used [-Wunused-const-variable=]
     472 | static const struct iwl_csr_params iwl_csr_v2 = {
         |                                    ^~~~~~~~~~
   drivers/net/wireless/intel/iwlwifi/mvm/../iwl-config.h:457:36: warning: 'iwl_csr_v1' defined but not used [-Wunused-const-variable=]
     457 | static const struct iwl_csr_params iwl_csr_v1 = {
         |                                    ^~~~~~~~~~

vim +/iwl_mvm_sta_tx_agg_start +2573 drivers/net/wireless/intel/iwlwifi/mvm/sta.c

3e56eadfb6a1f28 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-02-15  2458  
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2459  int iwl_mvm_sta_tx_agg_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2460  			     struct ieee80211_sta *sta, u16 tid, u16 *ssn)
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2461  {
5b577a90fb3d864 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-11-14  2462  	struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2463  	struct iwl_mvm_tid_data *tid_data;
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2464  	u16 normalized_ssn;
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2465  	u16 txq_id;
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2466  	int ret;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2467  
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2468  	if (WARN_ON_ONCE(tid >= IWL_MAX_TID_COUNT))
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2469  		return -EINVAL;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2470  
bd800e41a3de5c7 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2471  	if (mvmsta->tid_data[tid].state != IWL_AGG_QUEUED &&
bd800e41a3de5c7 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2472  	    mvmsta->tid_data[tid].state != IWL_AGG_OFF) {
bd800e41a3de5c7 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2473  		IWL_ERR(mvm,
bd800e41a3de5c7 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2474  			"Start AGG when state is not IWL_AGG_QUEUED or IWL_AGG_OFF %d!\n",
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2475  			mvmsta->tid_data[tid].state);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2476  		return -ENXIO;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2477  	}
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2478  
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2479  	lockdep_assert_held(&mvm->mutex);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2480  
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2481  	if (mvmsta->tid_data[tid].txq_id == IWL_MVM_INVALID_QUEUE &&
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2482  	    iwl_mvm_has_new_tx_api(mvm)) {
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2483  		u8 ac = tid_to_mac80211_ac[tid];
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2484  
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2485  		ret = iwl_mvm_sta_alloc_queue_tvqm(mvm, sta, ac, tid);
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2486  		if (ret)
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2487  			return ret;
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2488  	}
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2489  
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2490  	spin_lock_bh(&mvmsta->lock);
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2491  
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2492  	/* possible race condition - we entered D0i3 while starting agg */
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2493  	if (test_bit(IWL_MVM_STATUS_IN_D0I3, &mvm->status)) {
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2494  		spin_unlock_bh(&mvmsta->lock);
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2495  		IWL_ERR(mvm, "Entered D0i3 while starting Tx agg\n");
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2496  		return -EIO;
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2497  	}
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2498  
9f9af3d7d303a5f drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2499  	spin_lock(&mvm->queue_info_lock);
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2500  
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2501  	/*
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2502  	 * Note the possible cases:
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2503  	 *  1. An enabled TXQ - TXQ needs to become agg'ed
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2504  	 *  2. The TXQ hasn't yet been enabled, so find a free one and mark
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2505  	 *	it as reserved
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2506  	 */
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2507  	txq_id = mvmsta->tid_data[tid].txq_id;
34e10860ae8dc8a drivers/net/wireless/intel/iwlwifi/mvm/sta.c Sara Sharon         2017-02-23  2508  	if (txq_id == IWL_MVM_INVALID_QUEUE) {
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2509  		ret = iwl_mvm_find_free_queue(mvm, mvmsta->sta_id,
c8f54701bdbfcc7 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Johannes Berg       2017-06-19  2510  					      IWL_MVM_DQA_MIN_DATA_QUEUE,
c8f54701bdbfcc7 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Johannes Berg       2017-06-19  2511  					      IWL_MVM_DQA_MAX_DATA_QUEUE);
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2512  		if (ret < 0) {
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2513  			IWL_ERR(mvm, "Failed to allocate agg queue\n");
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2514  			goto release_locks;
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2515  		}
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2516  
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2517  		txq_id = ret;
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2518  
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2519  		/* TXQ hasn't yet been enabled, so mark it only as reserved */
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2520  		mvm->queue_info[txq_id].status = IWL_MVM_QUEUE_RESERVED;
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2521  	} else if (WARN_ON(txq_id >= IWL_MAX_HW_QUEUES)) {
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2522  		ret = -ENXIO;
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2523  		IWL_ERR(mvm, "tid_id %d out of range (0, %d)!\n",
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2524  			tid, IWL_MAX_HW_QUEUES - 1);
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2525  		goto out;
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2526  
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2527  	} else if (unlikely(mvm->queue_info[txq_id].status ==
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2528  			    IWL_MVM_QUEUE_SHARED)) {
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2529  		ret = -ENXIO;
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2530  		IWL_DEBUG_TX_QUEUES(mvm,
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2531  				    "Can't start tid %d agg on shared queue!\n",
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2532  				    tid);
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2533  		goto release_locks;
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2534  	}
9f9af3d7d303a5f drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2535  
9f9af3d7d303a5f drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2536  	spin_unlock(&mvm->queue_info_lock);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2537  
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2538  	IWL_DEBUG_TX_QUEUES(mvm,
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2539  			    "AGG for tid %d will be on queue #%d\n",
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2540  			    tid, txq_id);
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2541  
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2542  	tid_data = &mvmsta->tid_data[tid];
9a886586c82aa02 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-02-15  2543  	tid_data->ssn = IEEE80211_SEQ_TO_SN(tid_data->seq_number);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2544  	tid_data->txq_id = txq_id;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2545  	*ssn = tid_data->ssn;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2546  
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2547  	IWL_DEBUG_TX_QUEUES(mvm,
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2548  			    "Start AGG: sta %d tid %d queue %d - ssn = %d, next_recl = %d\n",
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2549  			    mvmsta->sta_id, tid, txq_id, tid_data->ssn,
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2550  			    tid_data->next_reclaimed);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2551  
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2552  	/*
2f7a3863191afc2 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Luca Coelho         2017-11-15  2553  	 * In 22000 HW, the next_reclaimed index is only 8 bit, so we'll need
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2554  	 * to align the wrap around of ssn so we compare relevant values.
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2555  	 */
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2556  	normalized_ssn = tid_data->ssn;
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2557  	if (mvm->trans->cfg->gen2)
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2558  		normalized_ssn &= 0xff;
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2559  
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2560  	if (normalized_ssn == tid_data->next_reclaimed) {
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2561  		tid_data->state = IWL_AGG_STARTING;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2562  		ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2563  	} else {
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2564  		tid_data->state = IWL_EMPTYING_HW_QUEUE_ADDBA;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2565  	}
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2566  
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2567  	ret = 0;
9f9af3d7d303a5f drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2568  	goto out;
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2569  
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2570  release_locks:
9f9af3d7d303a5f drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2571  	spin_unlock(&mvm->queue_info_lock);
9f9af3d7d303a5f drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2572  out:
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24 @2573  	spin_unlock_bh(&mvmsta->lock);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2574  
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2575  	return ret;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2576  }
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2577  

:::::: The code at line 2573 was first introduced by commit
:::::: 8ca151b568b67a7b72dcfc6ee6ea7c107ddd795c iwlwifi: add the MVM driver

:::::: TO: Johannes Berg <johannes.berg@intel.com>
:::::: CC: Johannes Berg <johannes.berg@intel.com>

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

_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 30753 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [linux-stable-rc:linux-4.19.y 6833/9999] drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block
@ 2020-11-18  9:57 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2020-11-18  9:57 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 18397 bytes --]

CC: kbuild-all(a)lists.01.org
TO: Mordechay Goodstein <mordechay.goodstein@intel.com>
CC: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
CC: Luca Coelho <luciano.coelho@intel.com>
CC: Sasha Levin <alexander.levin@microsoft.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
head:   e864f43593ccf9180c61738abdf1c1dde091367d
commit: 5ee7911e8e17afb4541096c6e98ffa61190338b3 [6833/9999] iwlwifi: mvm: avoid possible access out of array.
:::::: branch date: 5 months ago
:::::: commit date: 10 months ago
config: x86_64-randconfig-s022-20201118 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-113-g90be5636-dirty
        # https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=5ee7911e8e17afb4541096c6e98ffa61190338b3
        git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
        git fetch --no-tags linux-stable-rc linux-4.19.y
        git checkout 5ee7911e8e17afb4541096c6e98ffa61190338b3
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64 

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


"sparse warnings: (new ones prefixed by >>)"
   drivers/net/wireless/intel/iwlwifi/mvm/sta.c: note: in included file (through drivers/net/wireless/intel/iwlwifi/mvm/..//fw/img.h, drivers/net/wireless/intel/iwlwifi/mvm/..//iwl-trans.h, ...):
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:286:19: sparse: sparse: mixed bitwiseness
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:405:19: sparse: sparse: mixed bitwiseness
>> drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block
   In file included from drivers/net/wireless/intel/iwlwifi/mvm/../iwl-trans.h:76,
                    from drivers/net/wireless/intel/iwlwifi/mvm/mvm.h:83,
                    from drivers/net/wireless/intel/iwlwifi/mvm/sta.c:71:
   drivers/net/wireless/intel/iwlwifi/mvm/../iwl-config.h:472:36: warning: 'iwl_csr_v2' defined but not used [-Wunused-const-variable=]
     472 | static const struct iwl_csr_params iwl_csr_v2 = {
         |                                    ^~~~~~~~~~
   drivers/net/wireless/intel/iwlwifi/mvm/../iwl-config.h:457:36: warning: 'iwl_csr_v1' defined but not used [-Wunused-const-variable=]
     457 | static const struct iwl_csr_params iwl_csr_v1 = {
         |                                    ^~~~~~~~~~

vim +/iwl_mvm_sta_tx_agg_start +2573 drivers/net/wireless/intel/iwlwifi/mvm/sta.c

3e56eadfb6a1f28 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-02-15  2458  
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2459  int iwl_mvm_sta_tx_agg_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2460  			     struct ieee80211_sta *sta, u16 tid, u16 *ssn)
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2461  {
5b577a90fb3d864 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-11-14  2462  	struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2463  	struct iwl_mvm_tid_data *tid_data;
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2464  	u16 normalized_ssn;
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2465  	u16 txq_id;
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2466  	int ret;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2467  
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2468  	if (WARN_ON_ONCE(tid >= IWL_MAX_TID_COUNT))
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2469  		return -EINVAL;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2470  
bd800e41a3de5c7 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2471  	if (mvmsta->tid_data[tid].state != IWL_AGG_QUEUED &&
bd800e41a3de5c7 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2472  	    mvmsta->tid_data[tid].state != IWL_AGG_OFF) {
bd800e41a3de5c7 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2473  		IWL_ERR(mvm,
bd800e41a3de5c7 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2474  			"Start AGG when state is not IWL_AGG_QUEUED or IWL_AGG_OFF %d!\n",
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2475  			mvmsta->tid_data[tid].state);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2476  		return -ENXIO;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2477  	}
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2478  
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2479  	lockdep_assert_held(&mvm->mutex);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2480  
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2481  	if (mvmsta->tid_data[tid].txq_id == IWL_MVM_INVALID_QUEUE &&
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2482  	    iwl_mvm_has_new_tx_api(mvm)) {
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2483  		u8 ac = tid_to_mac80211_ac[tid];
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2484  
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2485  		ret = iwl_mvm_sta_alloc_queue_tvqm(mvm, sta, ac, tid);
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2486  		if (ret)
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2487  			return ret;
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2488  	}
bd8f3fc613919b5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2489  
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2490  	spin_lock_bh(&mvmsta->lock);
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2491  
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2492  	/* possible race condition - we entered D0i3 while starting agg */
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2493  	if (test_bit(IWL_MVM_STATUS_IN_D0I3, &mvm->status)) {
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2494  		spin_unlock_bh(&mvmsta->lock);
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2495  		IWL_ERR(mvm, "Entered D0i3 while starting Tx agg\n");
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2496  		return -EIO;
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2497  	}
b2492501d234ef7 drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2498  
9f9af3d7d303a5f drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2499  	spin_lock(&mvm->queue_info_lock);
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2500  
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2501  	/*
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2502  	 * Note the possible cases:
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2503  	 *  1. An enabled TXQ - TXQ needs to become agg'ed
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2504  	 *  2. The TXQ hasn't yet been enabled, so find a free one and mark
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2505  	 *	it as reserved
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2506  	 */
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2507  	txq_id = mvmsta->tid_data[tid].txq_id;
34e10860ae8dc8a drivers/net/wireless/intel/iwlwifi/mvm/sta.c Sara Sharon         2017-02-23  2508  	if (txq_id == IWL_MVM_INVALID_QUEUE) {
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2509  		ret = iwl_mvm_find_free_queue(mvm, mvmsta->sta_id,
c8f54701bdbfcc7 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Johannes Berg       2017-06-19  2510  					      IWL_MVM_DQA_MIN_DATA_QUEUE,
c8f54701bdbfcc7 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Johannes Berg       2017-06-19  2511  					      IWL_MVM_DQA_MAX_DATA_QUEUE);
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2512  		if (ret < 0) {
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2513  			IWL_ERR(mvm, "Failed to allocate agg queue\n");
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2514  			goto release_locks;
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2515  		}
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2516  
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2517  		txq_id = ret;
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2518  
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2519  		/* TXQ hasn't yet been enabled, so mark it only as reserved */
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2520  		mvm->queue_info[txq_id].status = IWL_MVM_QUEUE_RESERVED;
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2521  	} else if (WARN_ON(txq_id >= IWL_MAX_HW_QUEUES)) {
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2522  		ret = -ENXIO;
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2523  		IWL_ERR(mvm, "tid_id %d out of range (0, %d)!\n",
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2524  			tid, IWL_MAX_HW_QUEUES - 1);
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2525  		goto out;
5ee7911e8e17afb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2526  
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2527  	} else if (unlikely(mvm->queue_info[txq_id].status ==
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2528  			    IWL_MVM_QUEUE_SHARED)) {
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2529  		ret = -ENXIO;
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2530  		IWL_DEBUG_TX_QUEUES(mvm,
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2531  				    "Can't start tid %d agg on shared queue!\n",
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2532  				    tid);
4a6d2e525b43eba drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2533  		goto release_locks;
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2534  	}
9f9af3d7d303a5f drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2535  
9f9af3d7d303a5f drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2536  	spin_unlock(&mvm->queue_info_lock);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2537  
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2538  	IWL_DEBUG_TX_QUEUES(mvm,
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2539  			    "AGG for tid %d will be on queue #%d\n",
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2540  			    tid, txq_id);
cf961e16620f886 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2541  
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2542  	tid_data = &mvmsta->tid_data[tid];
9a886586c82aa02 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-02-15  2543  	tid_data->ssn = IEEE80211_SEQ_TO_SN(tid_data->seq_number);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2544  	tid_data->txq_id = txq_id;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2545  	*ssn = tid_data->ssn;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2546  
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2547  	IWL_DEBUG_TX_QUEUES(mvm,
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2548  			    "Start AGG: sta %d tid %d queue %d - ssn = %d, next_recl = %d\n",
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2549  			    mvmsta->sta_id, tid, txq_id, tid_data->ssn,
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2550  			    tid_data->next_reclaimed);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2551  
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2552  	/*
2f7a3863191afc2 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Luca Coelho         2017-11-15  2553  	 * In 22000 HW, the next_reclaimed index is only 8 bit, so we'll need
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2554  	 * to align the wrap around of ssn so we compare relevant values.
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2555  	 */
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2556  	normalized_ssn = tid_data->ssn;
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2557  	if (mvm->trans->cfg->gen2)
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2558  		normalized_ssn &= 0xff;
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2559  
dd32162da4e5b3c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2560  	if (normalized_ssn == tid_data->next_reclaimed) {
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2561  		tid_data->state = IWL_AGG_STARTING;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2562  		ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2563  	} else {
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2564  		tid_data->state = IWL_EMPTYING_HW_QUEUE_ADDBA;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2565  	}
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2566  
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2567  	ret = 0;
9f9af3d7d303a5f drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2568  	goto out;
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2569  
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2570  release_locks:
9f9af3d7d303a5f drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2571  	spin_unlock(&mvm->queue_info_lock);
9f9af3d7d303a5f drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2572  out:
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24 @2573  	spin_unlock_bh(&mvmsta->lock);
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2574  
4ecafae9e568025 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2575  	return ret;
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2576  }
8ca151b568b67a7 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2577  

:::::: The code at line 2573 was first introduced by commit
:::::: 8ca151b568b67a7b72dcfc6ee6ea7c107ddd795c iwlwifi: add the MVM driver

:::::: TO: Johannes Berg <johannes.berg@intel.com>
:::::: CC: Johannes Berg <johannes.berg@intel.com>

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 30753 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [linux-stable-rc:linux-4.19.y 6833/9999] drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block
@ 2020-09-21 12:24 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2020-09-21 12:24 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 18303 bytes --]

CC: kbuild-all(a)lists.01.org
TO: Mordechay Goodstein <mordechay.goodstein@intel.com>
CC: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
CC: Luca Coelho <luciano.coelho@intel.com>
CC: Sasha Levin <alexander.levin@microsoft.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
head:   e864f43593ccf9180c61738abdf1c1dde091367d
commit: 5ee7911e8e17afb4541096c6e98ffa61190338b3 [6833/9999] iwlwifi: mvm: avoid possible access out of array.
:::::: branch date: 3 months ago
:::::: commit date: 8 months ago
config: i386-randconfig-s031-20200921 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.2-201-g24bdaac6-dirty
        git checkout 5ee7911e8e17afb4541096c6e98ffa61190338b3
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 

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


sparse warnings: (new ones prefixed by >>)

   drivers/net/wireless/intel/iwlwifi/mvm/sta.c: note: in included file (through drivers/net/wireless/intel/iwlwifi/mvm/..//fw/img.h, drivers/net/wireless/intel/iwlwifi/mvm/..//iwl-trans.h, ...):
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:286:19: sparse: sparse: mixed bitwiseness
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:405:19: sparse: sparse: mixed bitwiseness
>> drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block
   In file included from drivers/net/wireless/intel/iwlwifi/mvm/../iwl-trans.h:76,
                    from drivers/net/wireless/intel/iwlwifi/mvm/mvm.h:83,
                    from drivers/net/wireless/intel/iwlwifi/mvm/sta.c:71:
   drivers/net/wireless/intel/iwlwifi/mvm/../iwl-config.h:472:36: warning: 'iwl_csr_v2' defined but not used [-Wunused-const-variable=]
     472 | static const struct iwl_csr_params iwl_csr_v2 = {
         |                                    ^~~~~~~~~~
   drivers/net/wireless/intel/iwlwifi/mvm/../iwl-config.h:457:36: warning: 'iwl_csr_v1' defined but not used [-Wunused-const-variable=]
     457 | static const struct iwl_csr_params iwl_csr_v1 = {
         |                                    ^~~~~~~~~~

# https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=5ee7911e8e17afb4541096c6e98ffa61190338b3
git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git fetch --no-tags linux-stable-rc linux-4.19.y
git checkout 5ee7911e8e17afb4541096c6e98ffa61190338b3
vim +/iwl_mvm_sta_tx_agg_start +2573 drivers/net/wireless/intel/iwlwifi/mvm/sta.c

3e56eadfb6a1f2 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-02-15  2458  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2459  int iwl_mvm_sta_tx_agg_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2460  			     struct ieee80211_sta *sta, u16 tid, u16 *ssn)
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2461  {
5b577a90fb3d86 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-11-14  2462  	struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2463  	struct iwl_mvm_tid_data *tid_data;
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2464  	u16 normalized_ssn;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2465  	u16 txq_id;
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2466  	int ret;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2467  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2468  	if (WARN_ON_ONCE(tid >= IWL_MAX_TID_COUNT))
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2469  		return -EINVAL;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2470  
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2471  	if (mvmsta->tid_data[tid].state != IWL_AGG_QUEUED &&
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2472  	    mvmsta->tid_data[tid].state != IWL_AGG_OFF) {
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2473  		IWL_ERR(mvm,
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2474  			"Start AGG when state is not IWL_AGG_QUEUED or IWL_AGG_OFF %d!\n",
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2475  			mvmsta->tid_data[tid].state);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2476  		return -ENXIO;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2477  	}
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2478  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2479  	lockdep_assert_held(&mvm->mutex);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2480  
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2481  	if (mvmsta->tid_data[tid].txq_id == IWL_MVM_INVALID_QUEUE &&
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2482  	    iwl_mvm_has_new_tx_api(mvm)) {
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2483  		u8 ac = tid_to_mac80211_ac[tid];
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2484  
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2485  		ret = iwl_mvm_sta_alloc_queue_tvqm(mvm, sta, ac, tid);
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2486  		if (ret)
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2487  			return ret;
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2488  	}
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2489  
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2490  	spin_lock_bh(&mvmsta->lock);
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2491  
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2492  	/* possible race condition - we entered D0i3 while starting agg */
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2493  	if (test_bit(IWL_MVM_STATUS_IN_D0I3, &mvm->status)) {
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2494  		spin_unlock_bh(&mvmsta->lock);
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2495  		IWL_ERR(mvm, "Entered D0i3 while starting Tx agg\n");
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2496  		return -EIO;
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2497  	}
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2498  
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2499  	spin_lock(&mvm->queue_info_lock);
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2500  
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2501  	/*
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2502  	 * Note the possible cases:
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2503  	 *  1. An enabled TXQ - TXQ needs to become agg'ed
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2504  	 *  2. The TXQ hasn't yet been enabled, so find a free one and mark
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2505  	 *	it as reserved
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2506  	 */
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2507  	txq_id = mvmsta->tid_data[tid].txq_id;
34e10860ae8dc8 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Sara Sharon         2017-02-23  2508  	if (txq_id == IWL_MVM_INVALID_QUEUE) {
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2509  		ret = iwl_mvm_find_free_queue(mvm, mvmsta->sta_id,
c8f54701bdbfcc drivers/net/wireless/intel/iwlwifi/mvm/sta.c Johannes Berg       2017-06-19  2510  					      IWL_MVM_DQA_MIN_DATA_QUEUE,
c8f54701bdbfcc drivers/net/wireless/intel/iwlwifi/mvm/sta.c Johannes Berg       2017-06-19  2511  					      IWL_MVM_DQA_MAX_DATA_QUEUE);
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2512  		if (ret < 0) {
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2513  			IWL_ERR(mvm, "Failed to allocate agg queue\n");
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2514  			goto release_locks;
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2515  		}
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2516  
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2517  		txq_id = ret;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2518  
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2519  		/* TXQ hasn't yet been enabled, so mark it only as reserved */
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2520  		mvm->queue_info[txq_id].status = IWL_MVM_QUEUE_RESERVED;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2521  	} else if (WARN_ON(txq_id >= IWL_MAX_HW_QUEUES)) {
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2522  		ret = -ENXIO;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2523  		IWL_ERR(mvm, "tid_id %d out of range (0, %d)!\n",
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2524  			tid, IWL_MAX_HW_QUEUES - 1);
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2525  		goto out;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2526  
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2527  	} else if (unlikely(mvm->queue_info[txq_id].status ==
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2528  			    IWL_MVM_QUEUE_SHARED)) {
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2529  		ret = -ENXIO;
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2530  		IWL_DEBUG_TX_QUEUES(mvm,
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2531  				    "Can't start tid %d agg on shared queue!\n",
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2532  				    tid);
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2533  		goto release_locks;
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2534  	}
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2535  
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2536  	spin_unlock(&mvm->queue_info_lock);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2537  
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2538  	IWL_DEBUG_TX_QUEUES(mvm,
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2539  			    "AGG for tid %d will be on queue #%d\n",
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2540  			    tid, txq_id);
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2541  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2542  	tid_data = &mvmsta->tid_data[tid];
9a886586c82aa0 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-02-15  2543  	tid_data->ssn = IEEE80211_SEQ_TO_SN(tid_data->seq_number);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2544  	tid_data->txq_id = txq_id;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2545  	*ssn = tid_data->ssn;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2546  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2547  	IWL_DEBUG_TX_QUEUES(mvm,
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2548  			    "Start AGG: sta %d tid %d queue %d - ssn = %d, next_recl = %d\n",
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2549  			    mvmsta->sta_id, tid, txq_id, tid_data->ssn,
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2550  			    tid_data->next_reclaimed);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2551  
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2552  	/*
2f7a3863191afc drivers/net/wireless/intel/iwlwifi/mvm/sta.c Luca Coelho         2017-11-15  2553  	 * In 22000 HW, the next_reclaimed index is only 8 bit, so we'll need
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2554  	 * to align the wrap around of ssn so we compare relevant values.
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2555  	 */
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2556  	normalized_ssn = tid_data->ssn;
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2557  	if (mvm->trans->cfg->gen2)
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2558  		normalized_ssn &= 0xff;
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2559  
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2560  	if (normalized_ssn == tid_data->next_reclaimed) {
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2561  		tid_data->state = IWL_AGG_STARTING;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2562  		ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2563  	} else {
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2564  		tid_data->state = IWL_EMPTYING_HW_QUEUE_ADDBA;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2565  	}
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2566  
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2567  	ret = 0;
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2568  	goto out;
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2569  
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2570  release_locks:
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2571  	spin_unlock(&mvm->queue_info_lock);
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2572  out:
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24 @2573  	spin_unlock_bh(&mvmsta->lock);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2574  
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2575  	return ret;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2576  }
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2577  

:::::: The code at line 2573 was first introduced by commit
:::::: 8ca151b568b67a7b72dcfc6ee6ea7c107ddd795c iwlwifi: add the MVM driver

:::::: TO: Johannes Berg <johannes.berg@intel.com>
:::::: CC: Johannes Berg <johannes.berg@intel.com>

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28353 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [linux-stable-rc:linux-4.19.y 6833/9999] drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block
@ 2020-08-12  5:06 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2020-08-12  5:06 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 17655 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
head:   e864f43593ccf9180c61738abdf1c1dde091367d
commit: 5ee7911e8e17afb4541096c6e98ffa61190338b3 [6833/9999] iwlwifi: mvm: avoid possible access out of array.
config: i386-randconfig-s001-20200812 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.2-168-g9554805c-dirty
        git checkout 5ee7911e8e17afb4541096c6e98ffa61190338b3
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 

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


sparse warnings: (new ones prefixed by >>)

   drivers/net/wireless/intel/iwlwifi/mvm/sta.c: note: in included file (through drivers/net/wireless/intel/iwlwifi/mvm/..//fw/img.h, drivers/net/wireless/intel/iwlwifi/mvm/..//iwl-trans.h, ...):
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:286:19: sparse: sparse: mixed bitwiseness
   drivers/net/wireless/intel/iwlwifi/mvm/..//fw/file.h:405:19: sparse: sparse: mixed bitwiseness
>> drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block
   In file included from drivers/net/wireless/intel/iwlwifi/mvm/../iwl-trans.h:76,
                    from drivers/net/wireless/intel/iwlwifi/mvm/mvm.h:83,
                    from drivers/net/wireless/intel/iwlwifi/mvm/sta.c:71:
   drivers/net/wireless/intel/iwlwifi/mvm/../iwl-config.h:472:36: warning: 'iwl_csr_v2' defined but not used [-Wunused-const-variable=]
     472 | static const struct iwl_csr_params iwl_csr_v2 = {
         |                                    ^~~~~~~~~~
   drivers/net/wireless/intel/iwlwifi/mvm/../iwl-config.h:457:36: warning: 'iwl_csr_v1' defined but not used [-Wunused-const-variable=]
     457 | static const struct iwl_csr_params iwl_csr_v1 = {
         |                                    ^~~~~~~~~~

vim +/iwl_mvm_sta_tx_agg_start +2573 drivers/net/wireless/intel/iwlwifi/mvm/sta.c

3e56eadfb6a1f2 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-02-15  2458  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2459  int iwl_mvm_sta_tx_agg_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2460  			     struct ieee80211_sta *sta, u16 tid, u16 *ssn)
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2461  {
5b577a90fb3d86 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-11-14  2462  	struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2463  	struct iwl_mvm_tid_data *tid_data;
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2464  	u16 normalized_ssn;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2465  	u16 txq_id;
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2466  	int ret;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2467  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2468  	if (WARN_ON_ONCE(tid >= IWL_MAX_TID_COUNT))
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2469  		return -EINVAL;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2470  
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2471  	if (mvmsta->tid_data[tid].state != IWL_AGG_QUEUED &&
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2472  	    mvmsta->tid_data[tid].state != IWL_AGG_OFF) {
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2473  		IWL_ERR(mvm,
bd800e41a3de5c drivers/net/wireless/intel/iwlwifi/mvm/sta.c Naftali Goldstein   2017-08-28  2474  			"Start AGG when state is not IWL_AGG_QUEUED or IWL_AGG_OFF %d!\n",
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2475  			mvmsta->tid_data[tid].state);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2476  		return -ENXIO;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2477  	}
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2478  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2479  	lockdep_assert_held(&mvm->mutex);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2480  
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2481  	if (mvmsta->tid_data[tid].txq_id == IWL_MVM_INVALID_QUEUE &&
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2482  	    iwl_mvm_has_new_tx_api(mvm)) {
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2483  		u8 ac = tid_to_mac80211_ac[tid];
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2484  
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2485  		ret = iwl_mvm_sta_alloc_queue_tvqm(mvm, sta, ac, tid);
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2486  		if (ret)
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2487  			return ret;
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2488  	}
bd8f3fc613919b drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2018-01-17  2489  
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2490  	spin_lock_bh(&mvmsta->lock);
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2491  
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2492  	/* possible race condition - we entered D0i3 while starting agg */
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2493  	if (test_bit(IWL_MVM_STATUS_IN_D0I3, &mvm->status)) {
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2494  		spin_unlock_bh(&mvmsta->lock);
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2495  		IWL_ERR(mvm, "Entered D0i3 while starting Tx agg\n");
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2496  		return -EIO;
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2497  	}
b2492501d234ef drivers/net/wireless/iwlwifi/mvm/sta.c       Arik Nemtsov        2014-03-13  2498  
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2499  	spin_lock(&mvm->queue_info_lock);
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2500  
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2501  	/*
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2502  	 * Note the possible cases:
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2503  	 *  1. An enabled TXQ - TXQ needs to become agg'ed
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2504  	 *  2. The TXQ hasn't yet been enabled, so find a free one and mark
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2505  	 *	it as reserved
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2506  	 */
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2507  	txq_id = mvmsta->tid_data[tid].txq_id;
34e10860ae8dc8 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Sara Sharon         2017-02-23  2508  	if (txq_id == IWL_MVM_INVALID_QUEUE) {
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2509  		ret = iwl_mvm_find_free_queue(mvm, mvmsta->sta_id,
c8f54701bdbfcc drivers/net/wireless/intel/iwlwifi/mvm/sta.c Johannes Berg       2017-06-19  2510  					      IWL_MVM_DQA_MIN_DATA_QUEUE,
c8f54701bdbfcc drivers/net/wireless/intel/iwlwifi/mvm/sta.c Johannes Berg       2017-06-19  2511  					      IWL_MVM_DQA_MAX_DATA_QUEUE);
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2512  		if (ret < 0) {
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2513  			IWL_ERR(mvm, "Failed to allocate agg queue\n");
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2514  			goto release_locks;
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2515  		}
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2516  
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2517  		txq_id = ret;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2518  
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2519  		/* TXQ hasn't yet been enabled, so mark it only as reserved */
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2520  		mvm->queue_info[txq_id].status = IWL_MVM_QUEUE_RESERVED;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2521  	} else if (WARN_ON(txq_id >= IWL_MAX_HW_QUEUES)) {
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2522  		ret = -ENXIO;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2523  		IWL_ERR(mvm, "tid_id %d out of range (0, %d)!\n",
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2524  			tid, IWL_MAX_HW_QUEUES - 1);
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2525  		goto out;
5ee7911e8e17af drivers/net/wireless/intel/iwlwifi/mvm/sta.c Mordechay Goodstein 2018-10-21  2526  
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2527  	} else if (unlikely(mvm->queue_info[txq_id].status ==
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2528  			    IWL_MVM_QUEUE_SHARED)) {
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2529  		ret = -ENXIO;
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2530  		IWL_DEBUG_TX_QUEUES(mvm,
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2531  				    "Can't start tid %d agg on shared queue!\n",
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2532  				    tid);
4a6d2e525b43eb drivers/net/wireless/intel/iwlwifi/mvm/sta.c Avraham Stern       2018-03-05  2533  		goto release_locks;
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2534  	}
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2535  
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2536  	spin_unlock(&mvm->queue_info_lock);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2537  
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2538  	IWL_DEBUG_TX_QUEUES(mvm,
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2539  			    "AGG for tid %d will be on queue #%d\n",
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2540  			    tid, txq_id);
cf961e16620f88 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-08-13  2541  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2542  	tid_data = &mvmsta->tid_data[tid];
9a886586c82aa0 drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-02-15  2543  	tid_data->ssn = IEEE80211_SEQ_TO_SN(tid_data->seq_number);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2544  	tid_data->txq_id = txq_id;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2545  	*ssn = tid_data->ssn;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2546  
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2547  	IWL_DEBUG_TX_QUEUES(mvm,
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2548  			    "Start AGG: sta %d tid %d queue %d - ssn = %d, next_recl = %d\n",
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2549  			    mvmsta->sta_id, tid, txq_id, tid_data->ssn,
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2550  			    tid_data->next_reclaimed);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2551  
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2552  	/*
2f7a3863191afc drivers/net/wireless/intel/iwlwifi/mvm/sta.c Luca Coelho         2017-11-15  2553  	 * In 22000 HW, the next_reclaimed index is only 8 bit, so we'll need
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2554  	 * to align the wrap around of ssn so we compare relevant values.
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2555  	 */
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2556  	normalized_ssn = tid_data->ssn;
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2557  	if (mvm->trans->cfg->gen2)
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2558  		normalized_ssn &= 0xff;
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2559  
dd32162da4e5b3 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2017-04-05  2560  	if (normalized_ssn == tid_data->next_reclaimed) {
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2561  		tid_data->state = IWL_AGG_STARTING;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2562  		ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2563  	} else {
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2564  		tid_data->state = IWL_EMPTYING_HW_QUEUE_ADDBA;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2565  	}
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2566  
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2567  	ret = 0;
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2568  	goto out;
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2569  
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2570  release_locks:
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2571  	spin_unlock(&mvm->queue_info_lock);
9f9af3d7d303a5 drivers/net/wireless/intel/iwlwifi/mvm/sta.c Liad Kaufman        2015-12-23  2572  out:
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24 @2573  	spin_unlock_bh(&mvmsta->lock);
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2574  
4ecafae9e56802 drivers/net/wireless/iwlwifi/mvm/sta.c       Liad Kaufman        2015-07-14  2575  	return ret;
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2576  }
8ca151b568b67a drivers/net/wireless/iwlwifi/mvm/sta.c       Johannes Berg       2013-01-24  2577  

:::::: The code at line 2573 was first introduced by commit
:::::: 8ca151b568b67a7b72dcfc6ee6ea7c107ddd795c iwlwifi: add the MVM driver

:::::: TO: Johannes Berg <johannes.berg@intel.com>
:::::: CC: Johannes Berg <johannes.berg@intel.com>

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 32893 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-12-12 19:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-23  8:52 [linux-stable-rc:linux-4.19.y 6833/9999] drivers/net/wireless/intel/iwlwifi/mvm/sta.c:2573:23: sparse: sparse: context imbalance in 'iwl_mvm_sta_tx_agg_start' - different lock contexts for basic block kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2020-12-12 19:02 kernel test robot
2020-11-19  0:47 kernel test robot
2020-11-18  9:57 kernel test robot
2020-09-21 12:24 kernel test robot
2020-08-12  5:06 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.