Hi Aditya, kernel test robot noticed the following build warnings: [auto build test WARNING on 8270f43193a0d097659eca55e701fd6818708945] url: https://github.com/intel-lab-lkp/linux/commits/Aditya-Kumar-Singh/wifi-ath12k-handle-regulatory-hints-during-mac-registration/20250613-012106 base: 8270f43193a0d097659eca55e701fd6818708945 patch link: https://lore.kernel.org/r/20250612-handle_user_regd_update_hints_during_insmod-v1-1-576bd0f6dbe0%40oss.qualcomm.com patch subject: [PATCH ath-next] wifi: ath12k: handle regulatory hints during mac registration config: um-allmodconfig (https://download.01.org/0day-ci/archive/20250613/202506131836.KoxnhWuQ-lkp@xxxxxxxxx/config) compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250613/202506131836.KoxnhWuQ-lkp@xxxxxxxxx/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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202506131836.KoxnhWuQ-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): In file included from drivers/net/wireless/ath/ath12k/wmi.c:6: In file included from include/linux/skbuff.h:17: In file included from include/linux/bvec.h:10: In file included from include/linux/highmem.h:12: In file included from include/linux/hardirq.h:11: In file included from arch/um/include/asm/hardirq.h:5: In file included from include/asm-generic/hardirq.h:17: In file included from include/linux/irq.h:20: In file included from include/linux/io.h:12: In file included from arch/um/include/asm/io.h:24: include/asm-generic/io.h:1175:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 1175 | return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port; | ~~~~~~~~~~ ^ >> drivers/net/wireless/ath/ath12k/wmi.c:6169:13: warning: variable 'pdev_idx' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized] 6169 | } else if (ret == ATH12K_REG_STATUS_DROP) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wireless/ath/ath12k/wmi.c:6216:17: note: uninitialized use occurs here 6216 | ar = ab->pdevs[pdev_idx].ar; | ^~~~~~~~ drivers/net/wireless/ath/ath12k/wmi.c:6169:9: note: remove the 'if' if its condition is always false 6169 | } else if (ret == ATH12K_REG_STATUS_DROP) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6170 | /* reg info is valid but we will not store it and | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6171 | * not going to create new regd for it | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6172 | */ | ~~ 6173 | ret = ATH12K_REG_STATUS_VALID; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6174 | goto mem_free; | ~~~~~~~~~~~~~~ 6175 | } | ~ drivers/net/wireless/ath/ath12k/wmi.c:6163:6: warning: variable 'pdev_idx' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized] 6163 | if (ret == ATH12K_REG_STATUS_FALLBACK) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wireless/ath/ath12k/wmi.c:6216:17: note: uninitialized use occurs here 6216 | ar = ab->pdevs[pdev_idx].ar; | ^~~~~~~~ drivers/net/wireless/ath/ath12k/wmi.c:6163:2: note: remove the 'if' if its condition is always false 6163 | if (ret == ATH12K_REG_STATUS_FALLBACK) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6164 | ath12k_warn(ab, "failed to validate reg info %d\n", ret); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6165 | /* firmware has successfully switches to new regd but host can not | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6166 | * continue, so free reginfo and fallback to old regd | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6167 | */ | ~~ 6168 | goto mem_free; | ~~~~~~~~~~~~~~ 6169 | } else if (ret == ATH12K_REG_STATUS_DROP) { | ~~~~~~ drivers/net/wireless/ath/ath12k/wmi.c:6157:6: warning: variable 'pdev_idx' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized] 6157 | if (ret) { | ^~~ drivers/net/wireless/ath/ath12k/wmi.c:6216:17: note: uninitialized use occurs here 6216 | ar = ab->pdevs[pdev_idx].ar; | ^~~~~~~~ drivers/net/wireless/ath/ath12k/wmi.c:6157:2: note: remove the 'if' if its condition is always false 6157 | if (ret) { | ^~~~~~~~~~ 6158 | ath12k_warn(ab, "failed to extract regulatory info from received event\n"); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6159 | goto mem_free; | ~~~~~~~~~~~~~~ 6160 | } | ~ drivers/net/wireless/ath/ath12k/wmi.c:6151:6: warning: variable 'pdev_idx' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized] 6151 | if (!reg_info) { | ^~~~~~~~~ drivers/net/wireless/ath/ath12k/wmi.c:6216:17: note: uninitialized use occurs here 6216 | ar = ab->pdevs[pdev_idx].ar; | ^~~~~~~~ drivers/net/wireless/ath/ath12k/wmi.c:6151:2: note: remove the 'if' if its condition is always false 6151 | if (!reg_info) { | ^~~~~~~~~~~~~~~~ 6152 | ret = -ENOMEM; | ~~~~~~~~~~~~~~ 6153 | goto fallback; | ~~~~~~~~~~~~~~ 6154 | } | ~ drivers/net/wireless/ath/ath12k/wmi.c:6147:13: note: initialize the variable 'pdev_idx' to silence this warning 6147 | u8 pdev_idx; | ^ | = '\0' 5 warnings generated. vim +6169 drivers/net/wireless/ath/ath12k/wmi.c d889913205cf7e Kalle Valo 2022-11-28 6142 d889913205cf7e Kalle Valo 2022-11-28 6143 static int ath12k_reg_chan_list_event(struct ath12k_base *ab, struct sk_buff *skb) d889913205cf7e Kalle Valo 2022-11-28 6144 { 9e8e55c5832d4f Baochen Qiang 2025-04-18 6145 struct ath12k_reg_info *reg_info; e05f9e5c56466b Aditya Kumar Singh 2025-06-12 6146 struct ath12k *ar; eaa027a1d83f87 Baochen Qiang 2025-04-18 6147 u8 pdev_idx; 9e8e55c5832d4f Baochen Qiang 2025-04-18 6148 int ret; d889913205cf7e Kalle Valo 2022-11-28 6149 d889913205cf7e Kalle Valo 2022-11-28 6150 reg_info = kzalloc(sizeof(*reg_info), GFP_ATOMIC); d889913205cf7e Kalle Valo 2022-11-28 6151 if (!reg_info) { d889913205cf7e Kalle Valo 2022-11-28 6152 ret = -ENOMEM; d889913205cf7e Kalle Valo 2022-11-28 6153 goto fallback; d889913205cf7e Kalle Valo 2022-11-28 6154 } d889913205cf7e Kalle Valo 2022-11-28 6155 d889913205cf7e Kalle Valo 2022-11-28 6156 ret = ath12k_pull_reg_chan_list_ext_update_ev(ab, skb, reg_info); d889913205cf7e Kalle Valo 2022-11-28 6157 if (ret) { d889913205cf7e Kalle Valo 2022-11-28 6158 ath12k_warn(ab, "failed to extract regulatory info from received event\n"); 75639b74351553 Baochen Qiang 2025-04-18 6159 goto mem_free; 75639b74351553 Baochen Qiang 2025-04-18 6160 } 75639b74351553 Baochen Qiang 2025-04-18 6161 75639b74351553 Baochen Qiang 2025-04-18 6162 ret = ath12k_reg_validate_reg_info(ab, reg_info); 75639b74351553 Baochen Qiang 2025-04-18 6163 if (ret == ATH12K_REG_STATUS_FALLBACK) { 75639b74351553 Baochen Qiang 2025-04-18 6164 ath12k_warn(ab, "failed to validate reg info %d\n", ret); 75639b74351553 Baochen Qiang 2025-04-18 6165 /* firmware has successfully switches to new regd but host can not 75639b74351553 Baochen Qiang 2025-04-18 6166 * continue, so free reginfo and fallback to old regd 75639b74351553 Baochen Qiang 2025-04-18 6167 */ 75639b74351553 Baochen Qiang 2025-04-18 6168 goto mem_free; 75639b74351553 Baochen Qiang 2025-04-18 @6169 } else if (ret == ATH12K_REG_STATUS_DROP) { 75639b74351553 Baochen Qiang 2025-04-18 6170 /* reg info is valid but we will not store it and 75639b74351553 Baochen Qiang 2025-04-18 6171 * not going to create new regd for it 75639b74351553 Baochen Qiang 2025-04-18 6172 */ 75639b74351553 Baochen Qiang 2025-04-18 6173 ret = ATH12K_REG_STATUS_VALID; 75639b74351553 Baochen Qiang 2025-04-18 6174 goto mem_free; d889913205cf7e Kalle Valo 2022-11-28 6175 } d889913205cf7e Kalle Valo 2022-11-28 6176 eaa027a1d83f87 Baochen Qiang 2025-04-18 6177 /* free old reg_info if it exist */ eaa027a1d83f87 Baochen Qiang 2025-04-18 6178 pdev_idx = reg_info->phy_id; eaa027a1d83f87 Baochen Qiang 2025-04-18 6179 if (ab->reg_info[pdev_idx]) { eaa027a1d83f87 Baochen Qiang 2025-04-18 6180 ath12k_reg_reset_reg_info(ab->reg_info[pdev_idx]); eaa027a1d83f87 Baochen Qiang 2025-04-18 6181 kfree(ab->reg_info[pdev_idx]); eaa027a1d83f87 Baochen Qiang 2025-04-18 6182 } eaa027a1d83f87 Baochen Qiang 2025-04-18 6183 /* reg_info is valid, we store it for later use eaa027a1d83f87 Baochen Qiang 2025-04-18 6184 * even below regd build failed eaa027a1d83f87 Baochen Qiang 2025-04-18 6185 */ eaa027a1d83f87 Baochen Qiang 2025-04-18 6186 ab->reg_info[pdev_idx] = reg_info; eaa027a1d83f87 Baochen Qiang 2025-04-18 6187 fafa6ff0823b79 Baochen Qiang 2025-04-18 6188 ret = ath12k_reg_handle_chan_list(ab, reg_info, WMI_VDEV_TYPE_UNSPEC, fafa6ff0823b79 Baochen Qiang 2025-04-18 6189 IEEE80211_REG_UNSET_AP); 9e8e55c5832d4f Baochen Qiang 2025-04-18 6190 if (ret) { 9e8e55c5832d4f Baochen Qiang 2025-04-18 6191 ath12k_warn(ab, "failed to handle chan list %d\n", ret); d889913205cf7e Kalle Valo 2022-11-28 6192 goto fallback; d889913205cf7e Kalle Valo 2022-11-28 6193 } d889913205cf7e Kalle Valo 2022-11-28 6194 75639b74351553 Baochen Qiang 2025-04-18 6195 goto out; 75639b74351553 Baochen Qiang 2025-04-18 6196 75639b74351553 Baochen Qiang 2025-04-18 6197 mem_free: 75639b74351553 Baochen Qiang 2025-04-18 6198 ath12k_reg_reset_reg_info(reg_info); 75639b74351553 Baochen Qiang 2025-04-18 6199 kfree(reg_info); 75639b74351553 Baochen Qiang 2025-04-18 6200 75639b74351553 Baochen Qiang 2025-04-18 6201 if (ret == ATH12K_REG_STATUS_VALID) e05f9e5c56466b Aditya Kumar Singh 2025-06-12 6202 goto out; d889913205cf7e Kalle Valo 2022-11-28 6203 d889913205cf7e Kalle Valo 2022-11-28 6204 fallback: d889913205cf7e Kalle Valo 2022-11-28 6205 /* Fallback to older reg (by sending previous country setting d889913205cf7e Kalle Valo 2022-11-28 6206 * again if fw has succeeded and we failed to process here. d889913205cf7e Kalle Valo 2022-11-28 6207 * The Regdomain should be uniform across driver and fw. Since the d889913205cf7e Kalle Valo 2022-11-28 6208 * FW has processed the command and sent a success status, we expect d889913205cf7e Kalle Valo 2022-11-28 6209 * this function to succeed as well. If it doesn't, CTRY needs to be d889913205cf7e Kalle Valo 2022-11-28 6210 * reverted at the fw and the old SCAN_CHAN_LIST cmd needs to be sent. d889913205cf7e Kalle Valo 2022-11-28 6211 */ d889913205cf7e Kalle Valo 2022-11-28 6212 /* TODO: This is rare, but still should also be handled */ d889913205cf7e Kalle Valo 2022-11-28 6213 WARN_ON(1); 9e8e55c5832d4f Baochen Qiang 2025-04-18 6214 75639b74351553 Baochen Qiang 2025-04-18 6215 out: e05f9e5c56466b Aditya Kumar Singh 2025-06-12 6216 ar = ab->pdevs[pdev_idx].ar; e05f9e5c56466b Aditya Kumar Singh 2025-06-12 6217 e05f9e5c56466b Aditya Kumar Singh 2025-06-12 6218 /* During the boot-time update, 'ar' might not be allocated, e05f9e5c56466b Aditya Kumar Singh 2025-06-12 6219 * so the completion cannot be marked at that point. e05f9e5c56466b Aditya Kumar Singh 2025-06-12 6220 * This boot-time update is handled in ath12k_mac_hw_register() e05f9e5c56466b Aditya Kumar Singh 2025-06-12 6221 * before registering the hardware. e05f9e5c56466b Aditya Kumar Singh 2025-06-12 6222 */ e05f9e5c56466b Aditya Kumar Singh 2025-06-12 6223 if (ar) e05f9e5c56466b Aditya Kumar Singh 2025-06-12 6224 complete(&ar->regd_update_completed); e05f9e5c56466b Aditya Kumar Singh 2025-06-12 6225 d889913205cf7e Kalle Valo 2022-11-28 6226 return ret; d889913205cf7e Kalle Valo 2022-11-28 6227 } d889913205cf7e Kalle Valo 2022-11-28 6228 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki