[ath:ath12k-mlo 38/63] drivers/net/wireless/ath/ath12k/mac.c:3981:8: warning: variable 'ret' is uninitialized when used here
kernel test robot
lkp at intel.com
Sun Sep 15 03:30:54 PDT 2024
tree: https://git.kernel.org/pub/scm/linux/kernel/git/ath/ath.git ath12k-mlo
head: 8f61af03fddc0a30bdf49e06a13eafff3cec91b0
commit: 0b9b7a1eece8952bde6e7f3c764e20a5ee11d3f7 [38/63] wifi: ath12k: modify link arvif creation and removal for MLO
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20240915/202409151853.OfodBWj3-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240915/202409151853.OfodBWj3-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409151853.OfodBWj3-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/net/wireless/ath/ath12k/mac.c:3981:8: warning: variable 'ret' is uninitialized when used here [-Wuninitialized]
3981 | if (ret)
| ^~~
drivers/net/wireless/ath/ath12k/mac.c:3931:9: note: initialize the variable 'ret' to silence this warning
3931 | int ret;
| ^
| = 0
drivers/net/wireless/ath/ath12k/mac.c:4434:8: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
4434 | if (WARN_ON(!arvif))
| ^~~~~~~~~~~~~~~
include/asm-generic/bug.h:122:28: note: expanded from macro 'WARN_ON'
122 | #define WARN_ON(condition) ({ \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
123 | int __ret_warn_on = !!(condition); \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
124 | if (unlikely(__ret_warn_on)) \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
125 | __WARN(); \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
126 | unlikely(__ret_warn_on); \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
127 | })
| ~~
drivers/net/wireless/ath/ath12k/mac.c:4467:9: note: uninitialized use occurs here
4467 | return ret;
| ^~~
drivers/net/wireless/ath/ath12k/mac.c:4434:4: note: remove the 'if' if its condition is always false
4434 | if (WARN_ON(!arvif))
| ^~~~~~~~~~~~~~~~~~~~
4435 | goto out;
| ~~~~~~~~
drivers/net/wireless/ath/ath12k/mac.c:4390:9: note: initialize the variable 'ret' to silence this warning
4390 | int ret;
| ^
| = 0
drivers/net/wireless/ath/ath12k/mac.c:9114:8: warning: variable 'ret' is uninitialized when used here [-Wuninitialized]
9114 | if (ret) {
| ^~~
drivers/net/wireless/ath/ath12k/mac.c:9068:9: note: initialize the variable 'ret' to silence this warning
9068 | int ret;
| ^
| = 0
3 warnings generated.
vim +/ret +3981 drivers/net/wireless/ath/ath12k/mac.c
0b9b7a1eece8952 Sriram R 2024-08-10 3919
d889913205cf7eb Kalle Valo 2022-11-28 3920 static int ath12k_mac_op_hw_scan(struct ieee80211_hw *hw,
d889913205cf7eb Kalle Valo 2022-11-28 3921 struct ieee80211_vif *vif,
d889913205cf7eb Kalle Valo 2022-11-28 3922 struct ieee80211_scan_request *hw_req)
d889913205cf7eb Kalle Valo 2022-11-28 3923 {
6db6e70a17f6fb3 Karthikeyan Periyasamy 2024-01-18 3924 struct ath12k_hw *ah = ath12k_hw_to_ah(hw);
0d6e6736ed9f3ff Sriram R 2024-04-09 3925 struct ath12k *ar, *prev_ar;
6c7887c8b9235b5 Sriram R 2024-01-27 3926 struct ath12k_vif *ahvif = ath12k_vif_to_ahvif(vif);
6c7887c8b9235b5 Sriram R 2024-01-27 3927 struct ath12k_link_vif *arvif;
d889913205cf7eb Kalle Valo 2022-11-28 3928 struct cfg80211_scan_request *req = &hw_req->req;
d889913205cf7eb Kalle Valo 2022-11-28 3929 struct ath12k_wmi_scan_req_arg arg = {};
0b9b7a1eece8952 Sriram R 2024-08-10 3930 u8 link_id;
d889913205cf7eb Kalle Valo 2022-11-28 3931 int ret;
d889913205cf7eb Kalle Valo 2022-11-28 3932 int i;
0d6e6736ed9f3ff Sriram R 2024-04-09 3933 bool create = true;
d889913205cf7eb Kalle Valo 2022-11-28 3934
6c7887c8b9235b5 Sriram R 2024-01-27 3935 mutex_lock(&ah->conf_mutex);
6c7887c8b9235b5 Sriram R 2024-01-27 3936 arvif = &ahvif->deflink;
6c7887c8b9235b5 Sriram R 2024-01-27 3937
0d6e6736ed9f3ff Sriram R 2024-04-09 3938 /* Since the targeted scan device could depend on the frequency
0d6e6736ed9f3ff Sriram R 2024-04-09 3939 * requested in the hw_req, select the corresponding radio
0d6e6736ed9f3ff Sriram R 2024-04-09 3940 */
4938ba733ee2147 Rameshkumar Sundaram 2024-06-11 3941 ar = ath12k_mac_select_scan_device(hw, vif, hw_req->req.channels[0]->center_freq);
6c7887c8b9235b5 Sriram R 2024-01-27 3942 if (!ar) {
6c7887c8b9235b5 Sriram R 2024-01-27 3943 mutex_unlock(&ah->conf_mutex);
0d6e6736ed9f3ff Sriram R 2024-04-09 3944 return -EINVAL;
6c7887c8b9235b5 Sriram R 2024-01-27 3945 }
0b9b7a1eece8952 Sriram R 2024-08-10 3946 /* check if any of the links of ML VIF is already started on
0b9b7a1eece8952 Sriram R 2024-08-10 3947 * radio(ar) correpsondig to given scan frequency and use it,
0b9b7a1eece8952 Sriram R 2024-08-10 3948 * if not use deflink(link 0) for scan purpose.
0b9b7a1eece8952 Sriram R 2024-08-10 3949 */
0b9b7a1eece8952 Sriram R 2024-08-10 3950 link_id = ath12k_mac_find_link_id_by_ar(ahvif, ar);
0b9b7a1eece8952 Sriram R 2024-08-10 3951 arvif = ath12k_mac_assign_link_vif(ah, vif, link_id);
0d6e6736ed9f3ff Sriram R 2024-04-09 3952 /* If the vif is already assigned to a specific vdev of an ar,
0d6e6736ed9f3ff Sriram R 2024-04-09 3953 * check whether its already started, vdev which is started
0d6e6736ed9f3ff Sriram R 2024-04-09 3954 * are not allowed to switch to a new radio.
0d6e6736ed9f3ff Sriram R 2024-04-09 3955 * If the vdev is not started, but was earlier created on a
0d6e6736ed9f3ff Sriram R 2024-04-09 3956 * different ar, delete that vdev and create a new one. We don't
0d6e6736ed9f3ff Sriram R 2024-04-09 3957 * delete at the scan stop as an optimization to avoid redundant
0d6e6736ed9f3ff Sriram R 2024-04-09 3958 * delete-create vdev's for the same ar, in case the request is
0d6e6736ed9f3ff Sriram R 2024-04-09 3959 * always on the same band for the vif
0d6e6736ed9f3ff Sriram R 2024-04-09 3960 */
0d6e6736ed9f3ff Sriram R 2024-04-09 3961 if (arvif->is_created) {
6c7887c8b9235b5 Sriram R 2024-01-27 3962 if (WARN_ON(!arvif->ar)) {
6c7887c8b9235b5 Sriram R 2024-01-27 3963 mutex_unlock(&ah->conf_mutex);
0d6e6736ed9f3ff Sriram R 2024-04-09 3964 return -EINVAL;
6c7887c8b9235b5 Sriram R 2024-01-27 3965 }
6db6e70a17f6fb3 Karthikeyan Periyasamy 2024-01-18 3966
6c7887c8b9235b5 Sriram R 2024-01-27 3967 if (ar != arvif->ar && arvif->is_started) {
6c7887c8b9235b5 Sriram R 2024-01-27 3968 mutex_unlock(&ah->conf_mutex);
0d6e6736ed9f3ff Sriram R 2024-04-09 3969 return -EINVAL;
6c7887c8b9235b5 Sriram R 2024-01-27 3970 }
0d6e6736ed9f3ff Sriram R 2024-04-09 3971
0d6e6736ed9f3ff Sriram R 2024-04-09 3972 if (ar != arvif->ar) {
0d6e6736ed9f3ff Sriram R 2024-04-09 3973 /* backup the previously used ar ptr, since the vdev delete
0d6e6736ed9f3ff Sriram R 2024-04-09 3974 * would assign the arvif->ar to NULL after the call
0d6e6736ed9f3ff Sriram R 2024-04-09 3975 */
0d6e6736ed9f3ff Sriram R 2024-04-09 3976 prev_ar = arvif->ar;
0d6e6736ed9f3ff Sriram R 2024-04-09 3977 mutex_lock(&prev_ar->conf_mutex);
0b9b7a1eece8952 Sriram R 2024-08-10 3978 ath12k_mac_remove_link_interface(hw, arvif);
0b9b7a1eece8952 Sriram R 2024-08-10 3979 ath12k_mac_unassign_link_vif(arvif);
0d6e6736ed9f3ff Sriram R 2024-04-09 3980 mutex_unlock(&prev_ar->conf_mutex);
0d6e6736ed9f3ff Sriram R 2024-04-09 @3981 if (ret)
0d6e6736ed9f3ff Sriram R 2024-04-09 3982 ath12k_warn(prev_ar->ab,
0d6e6736ed9f3ff Sriram R 2024-04-09 3983 "unable to delete scan vdev %d\n", ret);
0d6e6736ed9f3ff Sriram R 2024-04-09 3984 } else {
0d6e6736ed9f3ff Sriram R 2024-04-09 3985 create = false;
0d6e6736ed9f3ff Sriram R 2024-04-09 3986 }
0d6e6736ed9f3ff Sriram R 2024-04-09 3987 }
0d6e6736ed9f3ff Sriram R 2024-04-09 3988 if (create) {
0b9b7a1eece8952 Sriram R 2024-08-10 3989 /* Previous arvif would've been cleared in radio switch block
0b9b7a1eece8952 Sriram R 2024-08-10 3990 * above, assign arvif again for create.
0b9b7a1eece8952 Sriram R 2024-08-10 3991 */
0b9b7a1eece8952 Sriram R 2024-08-10 3992 arvif = ath12k_mac_assign_link_vif(ah, vif, link_id);
0d6e6736ed9f3ff Sriram R 2024-04-09 3993 mutex_lock(&ar->conf_mutex);
d8bd091dcd388d0 Sriram R 2024-04-17 3994 ret = ath12k_mac_vdev_create(ar, arvif);
0d6e6736ed9f3ff Sriram R 2024-04-09 3995 mutex_unlock(&ar->conf_mutex);
0d6e6736ed9f3ff Sriram R 2024-04-09 3996 if (ret) {
6c7887c8b9235b5 Sriram R 2024-01-27 3997 mutex_unlock(&ah->conf_mutex);
0d6e6736ed9f3ff Sriram R 2024-04-09 3998 ath12k_warn(ar->ab, "unable to create scan vdev %d\n", ret);
0d6e6736ed9f3ff Sriram R 2024-04-09 3999 return -EINVAL;
0d6e6736ed9f3ff Sriram R 2024-04-09 4000 }
0d6e6736ed9f3ff Sriram R 2024-04-09 4001 }
d889913205cf7eb Kalle Valo 2022-11-28 4002
0b9b7a1eece8952 Sriram R 2024-08-10 4003 mutex_lock(&ar->conf_mutex);
d889913205cf7eb Kalle Valo 2022-11-28 4004 spin_lock_bh(&ar->data_lock);
d889913205cf7eb Kalle Valo 2022-11-28 4005 switch (ar->scan.state) {
d889913205cf7eb Kalle Valo 2022-11-28 4006 case ATH12K_SCAN_IDLE:
d889913205cf7eb Kalle Valo 2022-11-28 4007 reinit_completion(&ar->scan.started);
d889913205cf7eb Kalle Valo 2022-11-28 4008 reinit_completion(&ar->scan.completed);
d889913205cf7eb Kalle Valo 2022-11-28 4009 ar->scan.state = ATH12K_SCAN_STARTING;
d889913205cf7eb Kalle Valo 2022-11-28 4010 ar->scan.is_roc = false;
d889913205cf7eb Kalle Valo 2022-11-28 4011 ar->scan.vdev_id = arvif->vdev_id;
d889913205cf7eb Kalle Valo 2022-11-28 4012 ret = 0;
d889913205cf7eb Kalle Valo 2022-11-28 4013 break;
d889913205cf7eb Kalle Valo 2022-11-28 4014 case ATH12K_SCAN_STARTING:
d889913205cf7eb Kalle Valo 2022-11-28 4015 case ATH12K_SCAN_RUNNING:
d889913205cf7eb Kalle Valo 2022-11-28 4016 case ATH12K_SCAN_ABORTING:
d889913205cf7eb Kalle Valo 2022-11-28 4017 ret = -EBUSY;
d889913205cf7eb Kalle Valo 2022-11-28 4018 break;
d889913205cf7eb Kalle Valo 2022-11-28 4019 }
d889913205cf7eb Kalle Valo 2022-11-28 4020 spin_unlock_bh(&ar->data_lock);
d889913205cf7eb Kalle Valo 2022-11-28 4021
d889913205cf7eb Kalle Valo 2022-11-28 4022 if (ret)
d889913205cf7eb Kalle Valo 2022-11-28 4023 goto exit;
d889913205cf7eb Kalle Valo 2022-11-28 4024
d889913205cf7eb Kalle Valo 2022-11-28 4025 ath12k_wmi_start_scan_init(ar, &arg);
d889913205cf7eb Kalle Valo 2022-11-28 4026 arg.vdev_id = arvif->vdev_id;
d889913205cf7eb Kalle Valo 2022-11-28 4027 arg.scan_id = ATH12K_SCAN_ID;
d889913205cf7eb Kalle Valo 2022-11-28 4028
d889913205cf7eb Kalle Valo 2022-11-28 4029 if (req->ie_len) {
8ad314da54c6dd2 Wen Gong 2023-07-26 4030 arg.extraie.ptr = kmemdup(req->ie, req->ie_len, GFP_KERNEL);
8ad314da54c6dd2 Wen Gong 2023-07-26 4031 if (!arg.extraie.ptr) {
8ad314da54c6dd2 Wen Gong 2023-07-26 4032 ret = -ENOMEM;
8ad314da54c6dd2 Wen Gong 2023-07-26 4033 goto exit;
8ad314da54c6dd2 Wen Gong 2023-07-26 4034 }
d889913205cf7eb Kalle Valo 2022-11-28 4035 arg.extraie.len = req->ie_len;
d889913205cf7eb Kalle Valo 2022-11-28 4036 }
d889913205cf7eb Kalle Valo 2022-11-28 4037
d889913205cf7eb Kalle Valo 2022-11-28 4038 if (req->n_ssids) {
d889913205cf7eb Kalle Valo 2022-11-28 4039 arg.num_ssids = req->n_ssids;
d889913205cf7eb Kalle Valo 2022-11-28 4040 for (i = 0; i < arg.num_ssids; i++)
d889913205cf7eb Kalle Valo 2022-11-28 4041 arg.ssid[i] = req->ssids[i];
d889913205cf7eb Kalle Valo 2022-11-28 4042 } else {
bcdb44f30be92b7 Nicolas Escande 2024-02-11 4043 arg.scan_f_passive = 1;
d889913205cf7eb Kalle Valo 2022-11-28 4044 }
d889913205cf7eb Kalle Valo 2022-11-28 4045
d889913205cf7eb Kalle Valo 2022-11-28 4046 if (req->n_channels) {
d889913205cf7eb Kalle Valo 2022-11-28 4047 arg.num_chan = req->n_channels;
3742928a52d6859 Wen Gong 2023-07-16 4048 arg.chan_list = kcalloc(arg.num_chan, sizeof(*arg.chan_list),
3742928a52d6859 Wen Gong 2023-07-16 4049 GFP_KERNEL);
3742928a52d6859 Wen Gong 2023-07-16 4050
3742928a52d6859 Wen Gong 2023-07-16 4051 if (!arg.chan_list) {
3742928a52d6859 Wen Gong 2023-07-16 4052 ret = -ENOMEM;
3742928a52d6859 Wen Gong 2023-07-16 4053 goto exit;
3742928a52d6859 Wen Gong 2023-07-16 4054 }
3742928a52d6859 Wen Gong 2023-07-16 4055
d889913205cf7eb Kalle Valo 2022-11-28 4056 for (i = 0; i < arg.num_chan; i++)
d889913205cf7eb Kalle Valo 2022-11-28 4057 arg.chan_list[i] = req->channels[i]->center_freq;
d889913205cf7eb Kalle Valo 2022-11-28 4058 }
d889913205cf7eb Kalle Valo 2022-11-28 4059
d889913205cf7eb Kalle Valo 2022-11-28 4060 ret = ath12k_start_scan(ar, &arg);
d889913205cf7eb Kalle Valo 2022-11-28 4061 if (ret) {
d889913205cf7eb Kalle Valo 2022-11-28 4062 ath12k_warn(ar->ab, "failed to start hw scan: %d\n", ret);
d889913205cf7eb Kalle Valo 2022-11-28 4063 spin_lock_bh(&ar->data_lock);
d889913205cf7eb Kalle Valo 2022-11-28 4064 ar->scan.state = ATH12K_SCAN_IDLE;
d889913205cf7eb Kalle Valo 2022-11-28 4065 spin_unlock_bh(&ar->data_lock);
d889913205cf7eb Kalle Valo 2022-11-28 4066 }
d889913205cf7eb Kalle Valo 2022-11-28 4067
d889913205cf7eb Kalle Valo 2022-11-28 4068 /* Add a margin to account for event/command processing */
b856f023b40fa77 Karthikeyan Periyasamy 2024-01-18 4069 ieee80211_queue_delayed_work(ath12k_ar_to_hw(ar), &ar->scan.timeout,
d889913205cf7eb Kalle Valo 2022-11-28 4070 msecs_to_jiffies(arg.max_scan_time +
d889913205cf7eb Kalle Valo 2022-11-28 4071 ATH12K_MAC_SCAN_TIMEOUT_MSECS));
d889913205cf7eb Kalle Valo 2022-11-28 4072
d889913205cf7eb Kalle Valo 2022-11-28 4073 exit:
3742928a52d6859 Wen Gong 2023-07-16 4074 kfree(arg.chan_list);
3742928a52d6859 Wen Gong 2023-07-16 4075
d889913205cf7eb Kalle Valo 2022-11-28 4076 if (req->ie_len)
d889913205cf7eb Kalle Valo 2022-11-28 4077 kfree(arg.extraie.ptr);
d889913205cf7eb Kalle Valo 2022-11-28 4078
d889913205cf7eb Kalle Valo 2022-11-28 4079 mutex_unlock(&ar->conf_mutex);
6c7887c8b9235b5 Sriram R 2024-01-27 4080 mutex_unlock(&ah->conf_mutex);
d889913205cf7eb Kalle Valo 2022-11-28 4081 return ret;
d889913205cf7eb Kalle Valo 2022-11-28 4082 }
d889913205cf7eb Kalle Valo 2022-11-28 4083
:::::: The code at line 3981 was first introduced by commit
:::::: 0d6e6736ed9f3ffb3a7f6ab6240bbb31a8fb3187 wifi: ath12k: scan statemachine changes for single wiphy
:::::: TO: Sriram R <quic_srirrama at quicinc.com>
:::::: CC: Kalle Valo <quic_kvalo at quicinc.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
More information about the ath12k
mailing list