* [wireless-next:main 6/6] net/mac80211/status.c:980 __ieee80211_tx_status() warn: potential spectre issue 'sta->deflink.status_stats.msdu_failed' [w]
@ 2022-04-12 3:04 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-04-12 3:04 UTC (permalink / raw)
To: kbuild
[-- 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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-04-12 3:04 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-12 3:04 [wireless-next:main 6/6] net/mac80211/status.c:980 __ieee80211_tx_status() warn: potential spectre issue 'sta->deflink.status_stats.msdu_failed' [w] 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.