Hi Luiz, kernel test robot noticed the following build warnings: [auto build test WARNING on bluetooth-next/master] [also build test WARNING on bluetooth/master linus/master v6.9-rc7 next-20240510] [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/Luiz-Augusto-von-Dentz/Bluetooth-MGMT-Make-MGMT_OP_LOAD_CONN_PARAM-update-existing-connection/20240510-223834 base: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master patch link: https://lore.kernel.org/r/20240510143645.1408056-1-luiz.dentz%40gmail.com patch subject: [PATCH v3] Bluetooth: MGMT: Make MGMT_OP_LOAD_CONN_PARAM update existing connection config: arm-defconfig (https://download.01.org/0day-ci/archive/20240511/202405110542.nDEonveB-lkp@xxxxxxxxx/config) compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240511/202405110542.nDEonveB-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/202405110542.nDEonveB-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): >> net/bluetooth/mgmt.c:7922:6: warning: variable 'i' is uninitialized when used here [-Wuninitialized] if (i > 1) ^ net/bluetooth/mgmt.c:7896:7: note: initialize the variable 'i' to silence this warning int i; ^ = 0 1 warning generated. vim +/i +7922 net/bluetooth/mgmt.c 7888 7889 static int load_conn_param(struct sock *sk, struct hci_dev *hdev, void *data, 7890 u16 len) 7891 { 7892 struct mgmt_cp_load_conn_param *cp = data; 7893 const u16 max_param_count = ((U16_MAX - sizeof(*cp)) / 7894 sizeof(struct mgmt_conn_param)); 7895 u16 param_count, expected_len; 7896 int i; 7897 7898 if (!lmp_le_capable(hdev)) 7899 return mgmt_cmd_status(sk, hdev->id, MGMT_OP_LOAD_CONN_PARAM, 7900 MGMT_STATUS_NOT_SUPPORTED); 7901 7902 param_count = __le16_to_cpu(cp->param_count); 7903 if (param_count > max_param_count) { 7904 bt_dev_err(hdev, "load_conn_param: too big param_count value %u", 7905 param_count); 7906 return mgmt_cmd_status(sk, hdev->id, MGMT_OP_LOAD_CONN_PARAM, 7907 MGMT_STATUS_INVALID_PARAMS); 7908 } 7909 7910 expected_len = struct_size(cp, params, param_count); 7911 if (expected_len != len) { 7912 bt_dev_err(hdev, "load_conn_param: expected %u bytes, got %u bytes", 7913 expected_len, len); 7914 return mgmt_cmd_status(sk, hdev->id, MGMT_OP_LOAD_CONN_PARAM, 7915 MGMT_STATUS_INVALID_PARAMS); 7916 } 7917 7918 bt_dev_dbg(hdev, "param_count %u", param_count); 7919 7920 hci_dev_lock(hdev); 7921 > 7922 if (i > 1) 7923 hci_conn_params_clear_disabled(hdev); 7924 7925 for (i = 0; i < param_count; i++) { 7926 struct mgmt_conn_param *param = &cp->params[i]; 7927 struct hci_conn_params *hci_param; 7928 u16 min, max, latency, timeout; 7929 u8 addr_type; 7930 bool update; 7931 7932 bt_dev_dbg(hdev, "Adding %pMR (type %u)", ¶m->addr.bdaddr, 7933 param->addr.type); 7934 7935 if (param->addr.type == BDADDR_LE_PUBLIC) { 7936 addr_type = ADDR_LE_DEV_PUBLIC; 7937 } else if (param->addr.type == BDADDR_LE_RANDOM) { 7938 addr_type = ADDR_LE_DEV_RANDOM; 7939 } else { 7940 bt_dev_err(hdev, "ignoring invalid connection parameters"); 7941 continue; 7942 } 7943 7944 min = le16_to_cpu(param->min_interval); 7945 max = le16_to_cpu(param->max_interval); 7946 latency = le16_to_cpu(param->latency); 7947 timeout = le16_to_cpu(param->timeout); 7948 7949 bt_dev_dbg(hdev, "min 0x%04x max 0x%04x latency 0x%04x timeout 0x%04x", 7950 min, max, latency, timeout); 7951 7952 if (hci_check_conn_params(min, max, latency, timeout) < 0) { 7953 bt_dev_err(hdev, "ignoring invalid connection parameters"); 7954 continue; 7955 } 7956 7957 /* Detect when the loading is for an existing parameter then 7958 * attempt to trigger the connection update procedure. 7959 */ 7960 if (!i && param_count == 1) { 7961 hci_param = hci_conn_params_lookup(hdev, 7962 ¶m->addr.bdaddr, 7963 addr_type); 7964 if (hci_param) 7965 update = true; 7966 else 7967 hci_conn_params_clear_disabled(hdev); 7968 } 7969 7970 hci_param = hci_conn_params_add(hdev, ¶m->addr.bdaddr, 7971 addr_type); 7972 if (!hci_param) { 7973 bt_dev_err(hdev, "failed to add connection parameters"); 7974 continue; 7975 } 7976 7977 hci_param->conn_min_interval = min; 7978 hci_param->conn_max_interval = max; 7979 hci_param->conn_latency = latency; 7980 hci_param->supervision_timeout = timeout; 7981 7982 if (update) { 7983 struct hci_conn *conn; 7984 7985 conn = hci_conn_hash_lookup_le(hdev, &hci_param->addr, 7986 addr_type); 7987 if (conn && conn->role == HCI_ROLE_MASTER && 7988 (conn->le_conn_min_interval != min || 7989 conn->le_conn_max_interval != max || 7990 conn->le_conn_latency != latency || 7991 conn->le_supv_timeout != timeout)) 7992 hci_cmd_sync_queue(hdev, conn_update_sync, 7993 hci_param, NULL); 7994 } 7995 } 7996 7997 hci_dev_unlock(hdev); 7998 7999 return mgmt_cmd_complete(sk, hdev->id, MGMT_OP_LOAD_CONN_PARAM, 0, 8000 NULL, 0); 8001 } 8002 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki