Hi Neeraj, kernel test robot noticed the following build warnings: [auto build test WARNING on bluetooth/master] [also build test WARNING on bluetooth-next/master linus/master v6.14-rc5 next-20250306] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Neeraj-Sanjay-Kale/Bluetooth-btnxpuart-Handle-bootloader-error-during-change-baudrate/20250305-214856 base: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git master patch link: https://lore.kernel.org/r/20250305134523.40111-2-neeraj.sanjaykale%40nxp.com patch subject: [PATCH v1 2/3] Bluetooth: btnxpuart: Handle bootloader error during change baudrate config: i386-buildonly-randconfig-001-20250306 (https://download.01.org/0day-ci/archive/20250307/202503070049.8e6dNvjC-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/20250307/202503070049.8e6dNvjC-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/202503070049.8e6dNvjC-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): >> drivers/bluetooth/btnxpuart.c:1104:6: warning: variable 'len' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] 1104 | if (!req->error) { | ^~~~~~~~~~~ drivers/bluetooth/btnxpuart.c:1168:28: note: uninitialized use occurs here 1168 | nxpdev->fw_v3_prev_sent = len; | ^~~ drivers/bluetooth/btnxpuart.c:1104:2: note: remove the 'if' if its condition is always true 1104 | if (!req->error) { | ^~~~~~~~~~~~~~~~ 1105 | nxp_send_ack(NXP_ACK_V3, hdev); 1106 | if (nxpdev->timeout_changed == cmd_sent) 1107 | nxpdev->timeout_changed = changed; 1108 | if (nxpdev->baudrate_changed == cmd_sent) 1109 | nxpdev->baudrate_changed = changed; 1110 | } else { | ~~~~~~ 1111 | nxp_handle_fw_download_error(hdev, req); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1112 | if (nxpdev->timeout_changed == cmd_sent && | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1113 | req->error == NXP_CRC_RX_ERROR) { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1114 | nxpdev->fw_v3_offset_correction -= nxpdev->fw_v3_prev_sent; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1115 | nxpdev->timeout_changed = not_changed; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1116 | } | ~ 1117 | /* After baudrate change, it is normal to get ACK Timeout error */ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1118 | if (nxpdev->baudrate_changed == cmd_sent && | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1119 | req->error == NXP_CRC_RX_ERROR) { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/bluetooth/btnxpuart.c:1101:6: warning: variable 'len' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized] 1101 | if (!req || !nxpdev->fw) | ^~~~~~~~~~~~~~~~~~~ drivers/bluetooth/btnxpuart.c:1168:28: note: uninitialized use occurs here 1168 | nxpdev->fw_v3_prev_sent = len; | ^~~ drivers/bluetooth/btnxpuart.c:1101:2: note: remove the 'if' if its condition is always false 1101 | if (!req || !nxpdev->fw) | ^~~~~~~~~~~~~~~~~~~~~~~~ 1102 | goto free_skb; | ~~~~~~~~~~~~~ >> drivers/bluetooth/btnxpuart.c:1101:6: warning: variable 'len' is used uninitialized whenever '||' condition is true [-Wsometimes-uninitialized] 1101 | if (!req || !nxpdev->fw) | ^~~~ drivers/bluetooth/btnxpuart.c:1168:28: note: uninitialized use occurs here 1168 | nxpdev->fw_v3_prev_sent = len; | ^~~ drivers/bluetooth/btnxpuart.c:1101:6: note: remove the '||' if its condition is always false 1101 | if (!req || !nxpdev->fw) | ^~~~~~~ drivers/bluetooth/btnxpuart.c:1097:6: warning: variable 'len' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized] 1097 | if (!process_boot_signature(nxpdev)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/bluetooth/btnxpuart.c:1168:28: note: uninitialized use occurs here 1168 | nxpdev->fw_v3_prev_sent = len; | ^~~ drivers/bluetooth/btnxpuart.c:1097:2: note: remove the 'if' if its condition is always false 1097 | if (!process_boot_signature(nxpdev)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1098 | goto free_skb; | ~~~~~~~~~~~~~ drivers/bluetooth/btnxpuart.c:1094:11: note: initialize the variable 'len' to silence this warning 1094 | __u16 len; | ^ | = 0 4 warnings generated. vim +1104 drivers/bluetooth/btnxpuart.c 27489364299a2d Neeraj Sanjay Kale 2024-06-14 1089 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1090 static int nxp_recv_fw_req_v3(struct hci_dev *hdev, struct sk_buff *skb) 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1091 { 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1092 struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1093 struct v3_data_req *req; 9e080b53dafae5 Luiz Augusto von Dentz 2023-04-17 1094 __u16 len; 9e080b53dafae5 Luiz Augusto von Dentz 2023-04-17 1095 __u32 offset; 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1096 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1097 if (!process_boot_signature(nxpdev)) 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1098 goto free_skb; 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1099 9e080b53dafae5 Luiz Augusto von Dentz 2023-04-17 1100 req = skb_pull_data(skb, sizeof(*req)); 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 @1101 if (!req || !nxpdev->fw) 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1102 goto free_skb; 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1103 27489364299a2d Neeraj Sanjay Kale 2024-06-14 @1104 if (!req->error) { 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1105 nxp_send_ack(NXP_ACK_V3, hdev); 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1106 if (nxpdev->timeout_changed == cmd_sent) 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1107 nxpdev->timeout_changed = changed; 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1108 if (nxpdev->baudrate_changed == cmd_sent) 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1109 nxpdev->baudrate_changed = changed; 27489364299a2d Neeraj Sanjay Kale 2024-06-14 1110 } else { 27489364299a2d Neeraj Sanjay Kale 2024-06-14 1111 nxp_handle_fw_download_error(hdev, req); 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1112 if (nxpdev->timeout_changed == cmd_sent && 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1113 req->error == NXP_CRC_RX_ERROR) { 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1114 nxpdev->fw_v3_offset_correction -= nxpdev->fw_v3_prev_sent; 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1115 nxpdev->timeout_changed = not_changed; 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1116 } 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1117 /* After baudrate change, it is normal to get ACK Timeout error */ 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1118 if (nxpdev->baudrate_changed == cmd_sent && 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1119 req->error == NXP_CRC_RX_ERROR) { 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1120 nxpdev->fw_v3_offset_correction -= nxpdev->fw_v3_prev_sent; 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1121 nxpdev->baudrate_changed = not_changed; 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1122 } 27489364299a2d Neeraj Sanjay Kale 2024-06-14 1123 goto free_skb; 27489364299a2d Neeraj Sanjay Kale 2024-06-14 1124 } 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1125 9e080b53dafae5 Luiz Augusto von Dentz 2023-04-17 1126 len = __le16_to_cpu(req->len); 9e080b53dafae5 Luiz Augusto von Dentz 2023-04-17 1127 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1128 if (nxpdev->timeout_changed != changed) { 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1129 nxp_fw_change_timeout(hdev, len); 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1130 nxpdev->timeout_changed = cmd_sent; 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1131 goto free_skb; 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1132 } 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1133 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1134 if (nxpdev->baudrate_changed != changed) { 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1135 if (nxp_fw_change_baudrate(hdev, len)) { 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1136 nxpdev->baudrate_changed = cmd_sent; 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1137 serdev_device_set_baudrate(nxpdev->serdev, 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1138 HCI_NXP_SEC_BAUDRATE); b0310d6ed684b8 Neeraj Sanjay Kale 2023-04-19 1139 serdev_device_set_flow_control(nxpdev->serdev, true); 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1140 nxpdev->current_baudrate = HCI_NXP_SEC_BAUDRATE; 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1141 } 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1142 goto free_skb; 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1143 } 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1144 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1145 if (req->len == 0) { 2684dd614ccf08 Neeraj Sanjay Kale 2024-05-15 1146 bt_dev_info(hdev, "FW Download Complete: %zu bytes", 9e080b53dafae5 Luiz Augusto von Dentz 2023-04-17 1147 nxpdev->fw->size); 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1148 clear_bit(BTNXPUART_FW_DOWNLOADING, &nxpdev->tx_state); 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1149 wake_up_interruptible(&nxpdev->fw_dnld_done_wait_q); 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1150 goto free_skb; 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1151 } 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1152 9e080b53dafae5 Luiz Augusto von Dentz 2023-04-17 1153 offset = __le32_to_cpu(req->offset); 9e080b53dafae5 Luiz Augusto von Dentz 2023-04-17 1154 if (offset < nxpdev->fw_v3_offset_correction) { 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1155 /* This scenario should ideally never occur. But if it ever does, 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1156 * FW is out of sync and needs a power cycle. 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1157 */ 9e080b53dafae5 Luiz Augusto von Dentz 2023-04-17 1158 bt_dev_err(hdev, "Something went wrong during FW download"); 9e080b53dafae5 Luiz Augusto von Dentz 2023-04-17 1159 bt_dev_err(hdev, "Please power cycle and try again"); 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1160 goto free_skb; 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1161 } 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1162 e3c4891098c875 Neeraj Sanjay Kale 2024-05-15 1163 nxpdev->fw_dnld_v3_offset = offset - nxpdev->fw_v3_offset_correction; e3c4891098c875 Neeraj Sanjay Kale 2024-05-15 1164 serdev_device_write_buf(nxpdev->serdev, nxpdev->fw->data + e3c4891098c875 Neeraj Sanjay Kale 2024-05-15 1165 nxpdev->fw_dnld_v3_offset, len); 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1166 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1167 free_skb: 5bf71799df5728 Neeraj Sanjay Kale 2025-03-05 1168 nxpdev->fw_v3_prev_sent = len; 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1169 kfree_skb(skb); 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1170 return 0; 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1171 } 689ca16e523278 Neeraj Sanjay Kale 2023-03-16 1172 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki