All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [wireless-next:main 6/6] net/mac80211/status.c:980 __ieee80211_tx_status() warn: potential spectre issue 'sta->deflink.status_stats.msdu_failed' [w]
Date: Tue, 12 Apr 2022 11:04:05 +0800	[thread overview]
Message-ID: <202204121149.xAXL07oi-lkp@intel.com> (raw)

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

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: Johannes Berg <johannes@sipsolutions.net>
CC: Kalle Valo <kvalo@kernel.org>
CC: linux-wireless(a)vger.kernel.org
TO: Sriram R <quic_srirrama@quicinc.com>
CC: Johannes Berg <johannes.berg@intel.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
head:   046d2e7c50e3087a32a85fd384c21f896dbccf83
commit: 046d2e7c50e3087a32a85fd384c21f896dbccf83 [6/6] mac80211: prepare sta handling for MLO support
:::::: branch date: 12 hours ago
:::::: commit date: 12 hours ago
config: i386-randconfig-m021-20220411 (https://download.01.org/0day-ci/archive/20220412/202204121149.xAXL07oi-lkp(a)intel.com/config)
compiler: gcc-11 (Debian 11.2.0-19) 11.2.0

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

smatch warnings:
net/mac80211/status.c:980 __ieee80211_tx_status() warn: potential spectre issue 'sta->deflink.status_stats.msdu_failed' [w]
net/mac80211/status.c:982 __ieee80211_tx_status() warn: potential spectre issue 'sta->deflink.status_stats.msdu_retries' [w]

vim +980 net/mac80211/status.c

4dc792b8f098ab Helmut Schaa           2015-09-02   892  
5fe49a9d11644f Felix Fietkau          2017-04-26   893  static void __ieee80211_tx_status(struct ieee80211_hw *hw,
3318111cf63d97 Felix Fietkau          2020-09-08   894  				  struct ieee80211_tx_status *status,
3318111cf63d97 Felix Fietkau          2020-09-08   895  				  int rates_idx, int retry_count)
4dc792b8f098ab Helmut Schaa           2015-09-02   896  {
5fe49a9d11644f Felix Fietkau          2017-04-26   897  	struct sk_buff *skb = status->skb;
7e1cdcbb092458 Felix Fietkau          2014-11-19   898  	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
7e1cdcbb092458 Felix Fietkau          2014-11-19   899  	struct ieee80211_local *local = hw_to_local(hw);
5fe49a9d11644f Felix Fietkau          2017-04-26   900  	struct ieee80211_tx_info *info = status->info;
5fe49a9d11644f Felix Fietkau          2017-04-26   901  	struct sta_info *sta;
7e1cdcbb092458 Felix Fietkau          2014-11-19   902  	__le16 fc;
7e1cdcbb092458 Felix Fietkau          2014-11-19   903  	struct ieee80211_supported_band *sband;
7e1cdcbb092458 Felix Fietkau          2014-11-19   904  	bool send_to_cooked;
7e1cdcbb092458 Felix Fietkau          2014-11-19   905  	bool acked;
5972fa15b923df Markus Theil           2019-12-18   906  	bool noack_success;
7e1cdcbb092458 Felix Fietkau          2014-11-19   907  	struct ieee80211_bar *bar;
7e1cdcbb092458 Felix Fietkau          2014-11-19   908  	int shift = 0;
5e06a9e8b6db44 Johannes Berg          2015-01-16   909  	int tid = IEEE80211_NUM_TIDS;
7e1cdcbb092458 Felix Fietkau          2014-11-19   910  
fe7a5d5c1ad659 Johannes Berg          2009-11-18   911  	sband = local->hw.wiphy->bands[info->band];
375177bf35efc0 Vivek Natarajan        2010-02-09   912  	fc = hdr->frame_control;
fe7a5d5c1ad659 Johannes Berg          2009-11-18   913  
5fe49a9d11644f Felix Fietkau          2017-04-26   914  	if (status->sta) {
5fe49a9d11644f Felix Fietkau          2017-04-26   915  		sta = container_of(status->sta, struct sta_info, sta);
2103dec14792be Simon Wunderlich       2013-07-08   916  		shift = ieee80211_vif_get_shift(&sta->sdata->vif);
2103dec14792be Simon Wunderlich       2013-07-08   917  
47086fc51aa222 Johannes Berg          2011-09-29   918  		if (info->flags & IEEE80211_TX_STATUS_EOSP)
c2c98fdeb5c897 Johannes Berg          2011-09-29   919  			clear_sta_flag(sta, WLAN_STA_SP);
47086fc51aa222 Johannes Berg          2011-09-29   920  
04ac3c0ee2c773 Felix Fietkau          2010-12-02   921  		acked = !!(info->flags & IEEE80211_TX_STAT_ACK);
5972fa15b923df Markus Theil           2019-12-18   922  		noack_success = !!(info->flags &
5972fa15b923df Markus Theil           2019-12-18   923  				   IEEE80211_TX_STAT_NOACK_TRANSMITTED);
71f2c3470fca51 Masashi Honma          2016-08-02   924  
71f2c3470fca51 Masashi Honma          2016-08-02   925  		/* mesh Peer Service Period support */
71f2c3470fca51 Masashi Honma          2016-08-02   926  		if (ieee80211_vif_is_mesh(&sta->sdata->vif) &&
71f2c3470fca51 Masashi Honma          2016-08-02   927  		    ieee80211_is_data_qos(fc))
71f2c3470fca51 Masashi Honma          2016-08-02   928  			ieee80211_mpsp_trigger_process(
71f2c3470fca51 Masashi Honma          2016-08-02   929  				ieee80211_get_qos_ctl(hdr), sta, true, acked);
71f2c3470fca51 Masashi Honma          2016-08-02   930  
30686bf7f5b3c3 Johannes Berg          2015-06-02   931  		if (ieee80211_hw_check(&local->hw, HAS_RATE_CONTROL) &&
00a9a6d1e2f18c Chun-Yeow Yeoh         2014-04-02   932  		    (ieee80211_is_data(hdr->frame_control)) &&
0c86980817853e Juuso Oikarinen        2010-04-22   933  		    (rates_idx != -1))
046d2e7c50e308 Sriram R               2022-04-04   934  			sta->deflink.tx_stats.last_rate =
e5a9f8d04660da Johannes Berg          2015-10-16   935  				info->status.rates[rates_idx];
0c86980817853e Juuso Oikarinen        2010-04-22   936  
fe7a5d5c1ad659 Johannes Berg          2009-11-18   937  		if ((info->flags & IEEE80211_TX_STAT_AMPDU_NO_BACK) &&
fe7a5d5c1ad659 Johannes Berg          2009-11-18   938  		    (ieee80211_is_data_qos(fc))) {
79c892b85027d5 Johannes Berg          2014-11-21   939  			u16 ssn;
fe7a5d5c1ad659 Johannes Berg          2009-11-18   940  			u8 *qc;
fe7a5d5c1ad659 Johannes Berg          2009-11-18   941  
fe7a5d5c1ad659 Johannes Berg          2009-11-18   942  			qc = ieee80211_get_qos_ctl(hdr);
fe7a5d5c1ad659 Johannes Berg          2009-11-18   943  			tid = qc[0] & 0xf;
fe7a5d5c1ad659 Johannes Berg          2009-11-18   944  			ssn = ((le16_to_cpu(hdr->seq_ctrl) + 0x10)
fe7a5d5c1ad659 Johannes Berg          2009-11-18   945  						& IEEE80211_SCTL_SEQ);
8c771244fbab51 Felix Fietkau          2011-08-20   946  			ieee80211_send_bar(&sta->sdata->vif, hdr->addr1,
fe7a5d5c1ad659 Johannes Berg          2009-11-18   947  					   tid, ssn);
79c892b85027d5 Johannes Berg          2014-11-21   948  		} else if (ieee80211_is_data_qos(fc)) {
79c892b85027d5 Johannes Berg          2014-11-21   949  			u8 *qc = ieee80211_get_qos_ctl(hdr);
79c892b85027d5 Johannes Berg          2014-11-21   950  
79c892b85027d5 Johannes Berg          2014-11-21   951  			tid = qc[0] & 0xf;
fe7a5d5c1ad659 Johannes Berg          2009-11-18   952  		}
fe7a5d5c1ad659 Johannes Berg          2009-11-18   953  
e69deded2bc29e Helmut Schaa           2011-08-11   954  		if (!acked && ieee80211_is_back_req(fc)) {
79c892b85027d5 Johannes Berg          2014-11-21   955  			u16 control;
7107676a3a4641 Felix Fietkau          2011-09-15   956  
e69deded2bc29e Helmut Schaa           2011-08-11   957  			/*
7107676a3a4641 Felix Fietkau          2011-09-15   958  			 * BAR failed, store the last SSN and retry sending
7107676a3a4641 Felix Fietkau          2011-09-15   959  			 * the BAR when the next unicast transmission on the
7107676a3a4641 Felix Fietkau          2011-09-15   960  			 * same TID succeeds.
e69deded2bc29e Helmut Schaa           2011-08-11   961  			 */
e69deded2bc29e Helmut Schaa           2011-08-11   962  			bar = (struct ieee80211_bar *) skb->data;
7107676a3a4641 Felix Fietkau          2011-09-15   963  			control = le16_to_cpu(bar->control);
7107676a3a4641 Felix Fietkau          2011-09-15   964  			if (!(control & IEEE80211_BAR_CTRL_MULTI_TID)) {
f0425beda4d404 Felix Fietkau          2011-08-28   965  				u16 ssn = le16_to_cpu(bar->start_seq_num);
f0425beda4d404 Felix Fietkau          2011-08-28   966  
7107676a3a4641 Felix Fietkau          2011-09-15   967  				tid = (control &
e69deded2bc29e Helmut Schaa           2011-08-11   968  				       IEEE80211_BAR_CTRL_TID_INFO_MASK) >>
e69deded2bc29e Helmut Schaa           2011-08-11   969  				      IEEE80211_BAR_CTRL_TID_INFO_SHIFT;
f0425beda4d404 Felix Fietkau          2011-08-28   970  
f0425beda4d404 Felix Fietkau          2011-08-28   971  				ieee80211_set_bar_pending(sta, tid, ssn);
e69deded2bc29e Helmut Schaa           2011-08-11   972  			}
e69deded2bc29e Helmut Schaa           2011-08-11   973  		}
e69deded2bc29e Helmut Schaa           2011-08-11   974  
fe7a5d5c1ad659 Johannes Berg          2009-11-18   975  		if (info->flags & IEEE80211_TX_STAT_TX_FILTERED) {
fe7a5d5c1ad659 Johannes Berg          2009-11-18   976  			ieee80211_handle_filtered_frame(local, sta, skb);
fe7a5d5c1ad659 Johannes Berg          2009-11-18   977  			return;
3318111cf63d97 Felix Fietkau          2020-09-08   978  		} else if (ieee80211_is_data_present(fc)) {
5972fa15b923df Markus Theil           2019-12-18   979  			if (!acked && !noack_success)
046d2e7c50e308 Sriram R               2022-04-04  @980  				sta->deflink.status_stats.msdu_failed[tid]++;
e5a9f8d04660da Johannes Berg          2015-10-16   981  
046d2e7c50e308 Sriram R               2022-04-04  @982  			sta->deflink.status_stats.msdu_retries[tid] +=
e5a9f8d04660da Johannes Berg          2015-10-16   983  				retry_count;
79c892b85027d5 Johannes Berg          2014-11-21   984  		}
0f78231bffb868 Johannes Berg          2009-12-01   985  
04ac3c0ee2c773 Felix Fietkau          2010-12-02   986  		if (!(info->flags & IEEE80211_TX_CTL_INJECTED) && acked)
0f78231bffb868 Johannes Berg          2009-12-01   987  			ieee80211_frame_acked(sta, skb);
99ba2a14283be9 Johannes Berg          2010-11-24   988  
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   989  	} else if (wiphy_ext_feature_isset(local->hw.wiphy,
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   990  					   NL80211_EXT_FEATURE_AIRTIME_FAIRNESS)) {
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   991  		struct ieee80211_sub_if_data *sdata;
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   992  		struct ieee80211_txq *txq;
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   993  		u32 airtime;
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   994  
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   995  		/* Account airtime to multicast queue */
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   996  		sdata = ieee80211_sdata_from_skb(local, skb);
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   997  
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   998  		if (sdata && (txq = sdata->vif.txq)) {
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   999  			airtime = info->status.tx_time ?:
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1000  				ieee80211_calc_expected_tx_airtime(hw,
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1001  								   &sdata->vif,
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1002  								   NULL,
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1003  								   skb->len,
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1004  								   false);
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1005  
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1006  			ieee80211_register_airtime(txq, airtime, 0);
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1007  		}
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1008  	}
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1009  
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1010  	/* SNMP counters
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1011  	 * Fragments are passed to low-level drivers as separate skbs, so these
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1012  	 * are actually fragments, not frames. Update frame counters only for
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1013  	 * the first fragment of the frame. */
5cf16616e152dd Sujith Manoharan       2014-12-10  1014  	if ((info->flags & IEEE80211_TX_STAT_ACK) ||
5cf16616e152dd Sujith Manoharan       2014-12-10  1015  	    (info->flags & IEEE80211_TX_STAT_NOACK_TRANSMITTED)) {
adf5ace5d8161b Helmut Schaa           2011-12-08  1016  		if (ieee80211_is_first_frag(hdr->seq_ctrl)) {
c206ca670974ce Johannes Berg          2015-04-22  1017  			I802_DEBUG_INC(local->dot11TransmittedFrameCount);
85b89af07d5095 Eliad Peller           2014-12-21  1018  			if (is_multicast_ether_addr(ieee80211_get_DA(hdr)))
c206ca670974ce Johannes Berg          2015-04-22  1019  				I802_DEBUG_INC(local->dot11MulticastTransmittedFrameCount);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1020  			if (retry_count > 0)
c206ca670974ce Johannes Berg          2015-04-22  1021  				I802_DEBUG_INC(local->dot11RetryCount);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1022  			if (retry_count > 1)
c206ca670974ce Johannes Berg          2015-04-22  1023  				I802_DEBUG_INC(local->dot11MultipleRetryCount);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1024  		}
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1025  
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1026  		/* This counter shall be incremented for an acknowledged MPDU
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1027  		 * with an individual address in the address 1 field or an MPDU
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1028  		 * with a multicast address in the address 1 field of type Data
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1029  		 * or Management. */
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1030  		if (!is_multicast_ether_addr(hdr->addr1) ||
adf5ace5d8161b Helmut Schaa           2011-12-08  1031  		    ieee80211_is_data(fc) ||
adf5ace5d8161b Helmut Schaa           2011-12-08  1032  		    ieee80211_is_mgmt(fc))
c206ca670974ce Johannes Berg          2015-04-22  1033  			I802_DEBUG_INC(local->dot11TransmittedFragmentCount);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1034  	} else {
adf5ace5d8161b Helmut Schaa           2011-12-08  1035  		if (ieee80211_is_first_frag(hdr->seq_ctrl))
c206ca670974ce Johannes Berg          2015-04-22  1036  			I802_DEBUG_INC(local->dot11FailedCount);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1037  	}
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1038  
30b2f0be23fb40 Thomas Pedersen        2020-01-13  1039  	if (ieee80211_is_any_nullfunc(fc) &&
08a5bdde381299 Thomas Pedersen        2019-11-18  1040  	    ieee80211_has_pm(fc) &&
30686bf7f5b3c3 Johannes Berg          2015-06-02  1041  	    ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS) &&
375177bf35efc0 Vivek Natarajan        2010-02-09  1042  	    !(info->flags & IEEE80211_TX_CTL_INJECTED) &&
375177bf35efc0 Vivek Natarajan        2010-02-09  1043  	    local->ps_sdata && !(local->scanning)) {
6e899fa027addf Bassem Dawood          2021-02-27  1044  		if (info->flags & IEEE80211_TX_STAT_ACK)
375177bf35efc0 Vivek Natarajan        2010-02-09  1045  			local->ps_sdata->u.mgd.flags |=
375177bf35efc0 Vivek Natarajan        2010-02-09  1046  					IEEE80211_STA_NULLFUNC_ACKED;
6e899fa027addf Bassem Dawood          2021-02-27  1047  		mod_timer(&local->dynamic_ps_timer,
6e899fa027addf Bassem Dawood          2021-02-27  1048  			  jiffies + msecs_to_jiffies(10));
375177bf35efc0 Vivek Natarajan        2010-02-09  1049  	}
375177bf35efc0 Vivek Natarajan        2010-02-09  1050  
8a2fbedcdc9bec Johannes Berg          2012-10-26  1051  	ieee80211_report_used_skb(local, skb, false);
a729cff8ad5120 Johannes Berg          2011-11-06  1052  
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1053  	/* this was a transmitted frame, but now we want to reuse it */
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1054  	skb_orphan(skb);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1055  
eaf55530c94cb7 Felix Fietkau          2010-03-11  1056  	/* Need to make a copy before skb->cb gets cleared */
eaf55530c94cb7 Felix Fietkau          2010-03-11  1057  	send_to_cooked = !!(info->flags & IEEE80211_TX_CTL_INJECTED) ||
adf5ace5d8161b Helmut Schaa           2011-12-08  1058  			 !(ieee80211_is_data(fc));
eaf55530c94cb7 Felix Fietkau          2010-03-11  1059  
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1060  	/*
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1061  	 * This is a bit racy but we can avoid a lot of work
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1062  	 * with this test...
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1063  	 */
eaf55530c94cb7 Felix Fietkau          2010-03-11  1064  	if (!local->monitors && (!send_to_cooked || !local->cooked_mntrs)) {
f02dff93e26bef Felix Fietkau          2020-09-08  1065  		if (status->free_list)
f02dff93e26bef Felix Fietkau          2020-09-08  1066  			list_add_tail(&skb->list, status->free_list);
f02dff93e26bef Felix Fietkau          2020-09-08  1067  		else
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1068  			dev_kfree_skb(skb);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1069  		return;
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1070  	}
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1071  
4dc792b8f098ab Helmut Schaa           2015-09-02  1072  	/* send to monitor interfaces */
b7b2e8caa08c30 John Crispin           2019-07-14  1073  	ieee80211_tx_monitor(local, skb, sband, retry_count, shift,
b7b2e8caa08c30 John Crispin           2019-07-14  1074  			     send_to_cooked, status);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1075  }
5fe49a9d11644f Felix Fietkau          2017-04-26  1076  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

                 reply	other threads:[~2022-04-12  3:04 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202204121149.xAXL07oi-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.