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.