Re: [PATCH v6 4/4] Bluetooth: Add toggle to switch off interleave scan

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux