[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