Hi Howard, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on bluetooth-next/master] [also build test WARNING on net-next/master net/master v5.9-rc7 next-20200925] [cannot apply to sparc-next/master] [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] url: https://github.com/0day-ci/linux/commits/Howard-Chung/Bluetooth-Interleave-with-allowlist-scan/20200928-154335 base: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master config: x86_64-randconfig-r011-20200928 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 6d374cf78c8a80a0bbfc7ce9bc80b3f183f44c80) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # https://github.com/0day-ci/linux/commit/99ac4165fefc0a5c5afc88f7f0527fe45333098d git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Howard-Chung/Bluetooth-Interleave-with-allowlist-scan/20200928-154335 git checkout 99ac4165fefc0a5c5afc88f7f0527fe45333098d # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): >> net/bluetooth/mgmt_config.c:166:14: warning: format specifies type 'size_t' (aka 'unsigned long') but the argument has type 'u8' (aka 'unsigned char') [-Wformat] len, exp_data_len, type); ^~~~~~~~~~~~ include/net/bluetooth/bluetooth.h:186:38: note: expanded from macro 'bt_dev_warn' BT_WARN("%s: " fmt, (hdev)->name, ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/net/bluetooth/bluetooth.h:174:47: note: expanded from macro 'BT_WARN' #define BT_WARN(fmt, ...) bt_warn(fmt "\n", ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ >> net/bluetooth/mgmt_config.c:159:3: warning: variable 'exp_data_len' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized] default: ^~~~~~~ net/bluetooth/mgmt_config.c:164:14: note: uninitialized use occurs here if (len != exp_data_len) { ^~~~~~~~~~~~ net/bluetooth/mgmt_config.c:111:18: note: initialize the variable 'exp_data_len' to silence this warning u8 exp_data_len; ^ = '\0' 2 warnings generated. vim +166 net/bluetooth/mgmt_config.c 89 90 #define TO_TLV(x) ((struct mgmt_tlv *)(x)) 91 #define TLV_GET_LE16(tlv) le16_to_cpu(*((__le16 *)(TO_TLV(tlv)->value))) 92 #define TLV_GET_U8(tlv) (*((__u8 *)(TO_TLV(tlv)->value))) 93 int set_def_system_config(struct sock *sk, struct hci_dev *hdev, void *data, 94 u16 data_len) 95 { 96 u16 buffer_left = data_len; 97 u8 *buffer = data; 98 99 if (buffer_left < sizeof(struct mgmt_tlv)) { 100 return mgmt_cmd_status(sk, hdev->id, 101 MGMT_OP_SET_DEF_SYSTEM_CONFIG, 102 MGMT_STATUS_INVALID_PARAMS); 103 } 104 105 /* First pass to validate the tlv */ 106 while (buffer_left >= sizeof(struct mgmt_tlv)) { 107 const u8 len = TO_TLV(buffer)->length; 108 const u16 exp_len = sizeof(struct mgmt_tlv) + 109 len; 110 const u16 type = le16_to_cpu(TO_TLV(buffer)->type); 111 u8 exp_data_len; 112 113 if (buffer_left < exp_len) { 114 bt_dev_warn(hdev, "invalid len left %d, exp >= %d", 115 buffer_left, exp_len); 116 117 return mgmt_cmd_status(sk, hdev->id, 118 MGMT_OP_SET_DEF_SYSTEM_CONFIG, 119 MGMT_STATUS_INVALID_PARAMS); 120 } 121 122 /* Please see mgmt-api.txt for documentation of these values */ 123 switch (type) { 124 case 0x0000: 125 case 0x0001: 126 case 0x0002: 127 case 0x0003: 128 case 0x0004: 129 case 0x0005: 130 case 0x0006: 131 case 0x0007: 132 case 0x0008: 133 case 0x0009: 134 case 0x000a: 135 case 0x000b: 136 case 0x000c: 137 case 0x000d: 138 case 0x000e: 139 case 0x000f: 140 case 0x0010: 141 case 0x0011: 142 case 0x0012: 143 case 0x0013: 144 case 0x0014: 145 case 0x0015: 146 case 0x0016: 147 case 0x0017: 148 case 0x0018: 149 case 0x0019: 150 case 0x001a: 151 case 0x001b: 152 case 0x001d: 153 case 0x001e: 154 exp_data_len = sizeof(u16); 155 break; 156 case 0x001f: 157 exp_data_len = sizeof(u8); 158 break; > 159 default: 160 bt_dev_warn(hdev, "unsupported parameter %u", type); 161 break; 162 } 163 164 if (len != exp_data_len) { 165 bt_dev_warn(hdev, "invalid length %d, exp %zu for type %d", > 166 len, exp_data_len, type); 167 168 return mgmt_cmd_status(sk, hdev->id, 169 MGMT_OP_SET_DEF_SYSTEM_CONFIG, 170 MGMT_STATUS_INVALID_PARAMS); 171 } 172 173 buffer_left -= exp_len; 174 buffer += exp_len; 175 } 176 177 buffer_left = data_len; 178 buffer = data; 179 while (buffer_left >= sizeof(struct mgmt_tlv)) { 180 const u8 len = TO_TLV(buffer)->length; 181 const u16 exp_len = sizeof(struct mgmt_tlv) + 182 len; 183 const u16 type = le16_to_cpu(TO_TLV(buffer)->type); 184 185 switch (type) { 186 case 0x0000: 187 hdev->def_page_scan_type = TLV_GET_LE16(buffer); 188 break; 189 case 0x0001: 190 hdev->def_page_scan_int = TLV_GET_LE16(buffer); 191 break; 192 case 0x0002: 193 hdev->def_page_scan_window = TLV_GET_LE16(buffer); 194 break; 195 case 0x0003: 196 hdev->def_inq_scan_type = TLV_GET_LE16(buffer); 197 break; 198 case 0x0004: 199 hdev->def_inq_scan_int = TLV_GET_LE16(buffer); 200 break; 201 case 0x0005: 202 hdev->def_inq_scan_window = TLV_GET_LE16(buffer); 203 break; 204 case 0x0006: 205 hdev->def_br_lsto = TLV_GET_LE16(buffer); 206 break; 207 case 0x0007: 208 hdev->def_page_timeout = TLV_GET_LE16(buffer); 209 break; 210 case 0x0008: 211 hdev->sniff_min_interval = TLV_GET_LE16(buffer); 212 break; 213 case 0x0009: 214 hdev->sniff_max_interval = TLV_GET_LE16(buffer); 215 break; 216 case 0x000a: 217 hdev->le_adv_min_interval = TLV_GET_LE16(buffer); 218 break; 219 case 0x000b: 220 hdev->le_adv_max_interval = TLV_GET_LE16(buffer); 221 break; 222 case 0x000c: 223 hdev->def_multi_adv_rotation_duration = 224 TLV_GET_LE16(buffer); 225 break; 226 case 0x000d: 227 hdev->le_scan_interval = TLV_GET_LE16(buffer); 228 break; 229 case 0x000e: 230 hdev->le_scan_window = TLV_GET_LE16(buffer); 231 break; 232 case 0x000f: 233 hdev->le_scan_int_suspend = TLV_GET_LE16(buffer); 234 break; 235 case 0x0010: 236 hdev->le_scan_window_suspend = TLV_GET_LE16(buffer); 237 break; 238 case 0x0011: 239 hdev->le_scan_int_discovery = TLV_GET_LE16(buffer); 240 break; 241 case 0x00012: 242 hdev->le_scan_window_discovery = TLV_GET_LE16(buffer); 243 break; 244 case 0x00013: 245 hdev->le_scan_int_adv_monitor = TLV_GET_LE16(buffer); 246 break; 247 case 0x00014: 248 hdev->le_scan_window_adv_monitor = TLV_GET_LE16(buffer); 249 break; 250 case 0x00015: 251 hdev->le_scan_int_connect = TLV_GET_LE16(buffer); 252 break; 253 case 0x00016: 254 hdev->le_scan_window_connect = TLV_GET_LE16(buffer); 255 break; 256 case 0x00017: 257 hdev->le_conn_min_interval = TLV_GET_LE16(buffer); 258 break; 259 case 0x00018: 260 hdev->le_conn_max_interval = TLV_GET_LE16(buffer); 261 break; 262 case 0x00019: 263 hdev->le_conn_latency = TLV_GET_LE16(buffer); 264 break; 265 case 0x0001a: 266 hdev->le_supv_timeout = TLV_GET_LE16(buffer); 267 break; 268 case 0x0001b: 269 hdev->def_le_autoconnect_timeout = 270 msecs_to_jiffies(TLV_GET_LE16(buffer)); 271 break; 272 case 0x0001d: 273 hdev->advmon_allowlist_duration = TLV_GET_LE16(buffer); 274 break; 275 case 0x0001e: 276 hdev->advmon_no_filter_duration = TLV_GET_LE16(buffer); 277 break; 278 case 0x0001f: 279 hdev->enable_advmon_interleave_scan = TLV_GET_U8(buffer); 280 break; 281 default: 282 bt_dev_warn(hdev, "unsupported parameter %u", type); 283 break; 284 } 285 286 buffer_left -= exp_len; 287 buffer += exp_len; 288 } 289 290 return mgmt_cmd_complete(sk, hdev->id, 291 MGMT_OP_SET_DEF_SYSTEM_CONFIG, 0, NULL, 0); 292 } 293 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip