All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Calvin Owens <calvin@wbinvd.org>
Cc: oe-kbuild-all@lists.linux.dev, linux-bluetooth@vger.kernel.org,
	Luiz Augusto von Dentz <luiz.von.dentz@intel.com>,
	Paul Menzel <pmenzel@molgen.mpg.de>
Subject: [bluetooth-next:master 83/84] drivers/bluetooth/btmtksdio.c:442:33: error: array type has incomplete element type 'struct h4_recv_pkt'
Date: Sat, 30 Aug 2025 04:34:06 +0800	[thread overview]
Message-ID: <202508300413.OnIedvRh-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master
head:   02925b3b935e2203077ec974b93bf2d5f84ab754
commit: 0e272fc7e17d429b018d4f2d9c5cacab10f5fab5 [83/84] Bluetooth: remove duplicate h4_recv_buf() in header
config: nios2-randconfig-002-20250830 (https://download.01.org/0day-ci/archive/20250830/202508300413.OnIedvRh-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250830/202508300413.OnIedvRh-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508300413.OnIedvRh-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

>> drivers/bluetooth/btmtksdio.c:442:33: error: array type has incomplete element type 'struct h4_recv_pkt'
    static const struct h4_recv_pkt mtk_recv_pkts[] = {
                                    ^~~~~~~~~~~~~
>> drivers/bluetooth/btmtksdio.c:443:4: error: 'H4_RECV_ACL' undeclared here (not in a function); did you mean 'IP_RECVTTL'?
     { H4_RECV_ACL,      .recv = btmtksdio_recv_acl },
       ^~~~~~~~~~~
       IP_RECVTTL
>> drivers/bluetooth/btmtksdio.c:443:22: error: field name not in record or union initializer
     { H4_RECV_ACL,      .recv = btmtksdio_recv_acl },
                         ^
   drivers/bluetooth/btmtksdio.c:443:22: note: (near initialization for 'mtk_recv_pkts')
>> drivers/bluetooth/btmtksdio.c:444:4: error: 'H4_RECV_SCO' undeclared here (not in a function)
     { H4_RECV_SCO,      .recv = hci_recv_frame },
       ^~~~~~~~~~~
   drivers/bluetooth/btmtksdio.c:444:22: error: field name not in record or union initializer
     { H4_RECV_SCO,      .recv = hci_recv_frame },
                         ^
   drivers/bluetooth/btmtksdio.c:444:22: note: (near initialization for 'mtk_recv_pkts')
>> drivers/bluetooth/btmtksdio.c:445:4: error: 'H4_RECV_EVENT' undeclared here (not in a function); did you mean 'BPF_PERF_EVENT'?
     { H4_RECV_EVENT,    .recv = btmtksdio_recv_event },
       ^~~~~~~~~~~~~
       BPF_PERF_EVENT
   drivers/bluetooth/btmtksdio.c:445:22: error: field name not in record or union initializer
     { H4_RECV_EVENT,    .recv = btmtksdio_recv_event },
                         ^
   drivers/bluetooth/btmtksdio.c:445:22: note: (near initialization for 'mtk_recv_pkts')
   In file included from include/linux/cleanup.h:5,
                    from include/linux/irqflags.h:17,
                    from include/asm-generic/cmpxchg.h:15,
                    from ./arch/nios2/include/generated/asm/cmpxchg.h:1,
                    from include/asm-generic/atomic.h:12,
                    from ./arch/nios2/include/generated/asm/atomic.h:1,
                    from include/linux/atomic.h:7,
                    from drivers/bluetooth/btmtksdio.c:14:
   drivers/bluetooth/btmtksdio.c: In function 'btmtksdio_rx_packet':
   include/linux/compiler.h:197:82: error: expression in static assertion is not an integer
    #define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
                                                                                     ^
   include/linux/compiler.h:202:28: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG'
    #define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \
                               ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array'
    #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
                                                              ^~~~~~~~~~~~~~~
   drivers/bluetooth/btmtksdio.c:451:19: note: in expansion of macro 'ARRAY_SIZE'
     int pkts_count = ARRAY_SIZE(mtk_recv_pkts);
                      ^~~~~~~~~~
>> drivers/bluetooth/btmtksdio.c:493:34: error: invalid use of undefined type 'struct h4_recv_pkt'
      if (sdio_hdr->bt_type == (&pkts[i])->type)
                                     ^
>> drivers/bluetooth/btmtksdio.c:493:34: error: dereferencing pointer to incomplete type 'const struct h4_recv_pkt'
   drivers/bluetooth/btmtksdio.c:504:23: error: invalid use of undefined type 'struct h4_recv_pkt'
     if (skb->len < (&pkts[i])->hlen) {
                          ^
   drivers/bluetooth/btmtksdio.c:509:16: error: invalid use of undefined type 'struct h4_recv_pkt'
     switch ((&pkts[i])->lsize) {
                   ^
   drivers/bluetooth/btmtksdio.c:511:26: error: invalid use of undefined type 'struct h4_recv_pkt'
      dlen = skb->data[(&pkts[i])->loff];
                             ^
   drivers/bluetooth/btmtksdio.c:515:15: error: invalid use of undefined type 'struct h4_recv_pkt'
            (&pkts[i])->loff);
                  ^
   drivers/bluetooth/btmtksdio.c:521:30: error: invalid use of undefined type 'struct h4_recv_pkt'
     pad_size = skb->len - (&pkts[i])->hlen -  dlen;
                                 ^
   drivers/bluetooth/btmtksdio.c:533:8: error: invalid use of undefined type 'struct h4_recv_pkt'
     (&pkts[i])->recv(bdev->hdev, skb);
           ^
   At top level:
>> drivers/bluetooth/btmtksdio.c:442:33: warning: 'mtk_recv_pkts' defined but not used [-Wunused-variable]
    static const struct h4_recv_pkt mtk_recv_pkts[] = {
                                    ^~~~~~~~~~~~~


vim +442 drivers/bluetooth/btmtksdio.c

db57b625912abc Sean Wang 2021-11-20  441  
9aebfd4a2200ab Sean Wang 2019-03-08 @442  static const struct h4_recv_pkt mtk_recv_pkts[] = {
db57b625912abc Sean Wang 2021-11-20 @443  	{ H4_RECV_ACL,      .recv = btmtksdio_recv_acl },
9aebfd4a2200ab Sean Wang 2019-03-08 @444  	{ H4_RECV_SCO,      .recv = hci_recv_frame },
9aebfd4a2200ab Sean Wang 2019-03-08 @445  	{ H4_RECV_EVENT,    .recv = btmtksdio_recv_event },
9aebfd4a2200ab Sean Wang 2019-03-08  446  };
9aebfd4a2200ab Sean Wang 2019-03-08  447  
9aebfd4a2200ab Sean Wang 2019-03-08  448  static int btmtksdio_rx_packet(struct btmtksdio_dev *bdev, u16 rx_size)
9aebfd4a2200ab Sean Wang 2019-03-08  449  {
9aebfd4a2200ab Sean Wang 2019-03-08  450  	const struct h4_recv_pkt *pkts = mtk_recv_pkts;
9aebfd4a2200ab Sean Wang 2019-03-08  451  	int pkts_count = ARRAY_SIZE(mtk_recv_pkts);
9aebfd4a2200ab Sean Wang 2019-03-08  452  	struct mtkbtsdio_hdr *sdio_hdr;
9aebfd4a2200ab Sean Wang 2019-03-08  453  	int err, i, pad_size;
9aebfd4a2200ab Sean Wang 2019-03-08  454  	struct sk_buff *skb;
9aebfd4a2200ab Sean Wang 2019-03-08  455  	u16 dlen;
9aebfd4a2200ab Sean Wang 2019-03-08  456  
9aebfd4a2200ab Sean Wang 2019-03-08  457  	if (rx_size < sizeof(*sdio_hdr))
9aebfd4a2200ab Sean Wang 2019-03-08  458  		return -EILSEQ;
9aebfd4a2200ab Sean Wang 2019-03-08  459  
9aebfd4a2200ab Sean Wang 2019-03-08  460  	/* A SDIO packet is exactly containing a Bluetooth packet */
9aebfd4a2200ab Sean Wang 2019-03-08  461  	skb = bt_skb_alloc(rx_size, GFP_KERNEL);
9aebfd4a2200ab Sean Wang 2019-03-08  462  	if (!skb)
9aebfd4a2200ab Sean Wang 2019-03-08  463  		return -ENOMEM;
9aebfd4a2200ab Sean Wang 2019-03-08  464  
9aebfd4a2200ab Sean Wang 2019-03-08  465  	skb_put(skb, rx_size);
9aebfd4a2200ab Sean Wang 2019-03-08  466  
9aebfd4a2200ab Sean Wang 2019-03-08  467  	err = sdio_readsb(bdev->func, skb->data, MTK_REG_CRDR, rx_size);
9aebfd4a2200ab Sean Wang 2019-03-08  468  	if (err < 0)
9aebfd4a2200ab Sean Wang 2019-03-08  469  		goto err_kfree_skb;
9aebfd4a2200ab Sean Wang 2019-03-08  470  
9aebfd4a2200ab Sean Wang 2019-03-08  471  	sdio_hdr = (void *)skb->data;
9aebfd4a2200ab Sean Wang 2019-03-08  472  
9aebfd4a2200ab Sean Wang 2019-03-08  473  	/* We assume the default error as -EILSEQ simply to make the error path
9aebfd4a2200ab Sean Wang 2019-03-08  474  	 * be cleaner.
9aebfd4a2200ab Sean Wang 2019-03-08  475  	 */
9aebfd4a2200ab Sean Wang 2019-03-08  476  	err = -EILSEQ;
9aebfd4a2200ab Sean Wang 2019-03-08  477  
9aebfd4a2200ab Sean Wang 2019-03-08  478  	if (rx_size != le16_to_cpu(sdio_hdr->len)) {
9aebfd4a2200ab Sean Wang 2019-03-08  479  		bt_dev_err(bdev->hdev, "Rx size in sdio header is mismatched ");
9aebfd4a2200ab Sean Wang 2019-03-08  480  		goto err_kfree_skb;
9aebfd4a2200ab Sean Wang 2019-03-08  481  	}
9aebfd4a2200ab Sean Wang 2019-03-08  482  
9aebfd4a2200ab Sean Wang 2019-03-08  483  	hci_skb_pkt_type(skb) = sdio_hdr->bt_type;
9aebfd4a2200ab Sean Wang 2019-03-08  484  
9aebfd4a2200ab Sean Wang 2019-03-08  485  	/* Remove MediaTek SDIO header */
9aebfd4a2200ab Sean Wang 2019-03-08  486  	skb_pull(skb, sizeof(*sdio_hdr));
9aebfd4a2200ab Sean Wang 2019-03-08  487  
9aebfd4a2200ab Sean Wang 2019-03-08  488  	/* We have to dig into the packet to get payload size and then know how
9aebfd4a2200ab Sean Wang 2019-03-08  489  	 * many padding bytes at the tail, these padding bytes should be removed
9aebfd4a2200ab Sean Wang 2019-03-08  490  	 * before the packet is indicated to the core layer.
9aebfd4a2200ab Sean Wang 2019-03-08  491  	 */
9aebfd4a2200ab Sean Wang 2019-03-08  492  	for (i = 0; i < pkts_count; i++) {
9aebfd4a2200ab Sean Wang 2019-03-08 @493  		if (sdio_hdr->bt_type == (&pkts[i])->type)
9aebfd4a2200ab Sean Wang 2019-03-08  494  			break;
9aebfd4a2200ab Sean Wang 2019-03-08  495  	}
9aebfd4a2200ab Sean Wang 2019-03-08  496  
9aebfd4a2200ab Sean Wang 2019-03-08  497  	if (i >= pkts_count) {
9aebfd4a2200ab Sean Wang 2019-03-08  498  		bt_dev_err(bdev->hdev, "Invalid bt type 0x%02x",
9aebfd4a2200ab Sean Wang 2019-03-08  499  			   sdio_hdr->bt_type);
9aebfd4a2200ab Sean Wang 2019-03-08  500  		goto err_kfree_skb;
9aebfd4a2200ab Sean Wang 2019-03-08  501  	}
9aebfd4a2200ab Sean Wang 2019-03-08  502  
9aebfd4a2200ab Sean Wang 2019-03-08  503  	/* Remaining bytes cannot hold a header*/
9aebfd4a2200ab Sean Wang 2019-03-08  504  	if (skb->len < (&pkts[i])->hlen) {
9aebfd4a2200ab Sean Wang 2019-03-08  505  		bt_dev_err(bdev->hdev, "The size of bt header is mismatched");
9aebfd4a2200ab Sean Wang 2019-03-08  506  		goto err_kfree_skb;
9aebfd4a2200ab Sean Wang 2019-03-08  507  	}
9aebfd4a2200ab Sean Wang 2019-03-08  508  
9aebfd4a2200ab Sean Wang 2019-03-08  509  	switch ((&pkts[i])->lsize) {
9aebfd4a2200ab Sean Wang 2019-03-08  510  	case 1:
9aebfd4a2200ab Sean Wang 2019-03-08  511  		dlen = skb->data[(&pkts[i])->loff];
9aebfd4a2200ab Sean Wang 2019-03-08  512  		break;
9aebfd4a2200ab Sean Wang 2019-03-08  513  	case 2:
9aebfd4a2200ab Sean Wang 2019-03-08  514  		dlen = get_unaligned_le16(skb->data +
9aebfd4a2200ab Sean Wang 2019-03-08  515  						  (&pkts[i])->loff);
9aebfd4a2200ab Sean Wang 2019-03-08  516  		break;
9aebfd4a2200ab Sean Wang 2019-03-08  517  	default:
9aebfd4a2200ab Sean Wang 2019-03-08  518  		goto err_kfree_skb;
9aebfd4a2200ab Sean Wang 2019-03-08  519  	}
9aebfd4a2200ab Sean Wang 2019-03-08  520  
9aebfd4a2200ab Sean Wang 2019-03-08  521  	pad_size = skb->len - (&pkts[i])->hlen -  dlen;
9aebfd4a2200ab Sean Wang 2019-03-08  522  
9aebfd4a2200ab Sean Wang 2019-03-08  523  	/* Remaining bytes cannot hold a payload */
9aebfd4a2200ab Sean Wang 2019-03-08  524  	if (pad_size < 0) {
9aebfd4a2200ab Sean Wang 2019-03-08  525  		bt_dev_err(bdev->hdev, "The size of bt payload is mismatched");
9aebfd4a2200ab Sean Wang 2019-03-08  526  		goto err_kfree_skb;
9aebfd4a2200ab Sean Wang 2019-03-08  527  	}
9aebfd4a2200ab Sean Wang 2019-03-08  528  
9aebfd4a2200ab Sean Wang 2019-03-08  529  	/* Remove padding bytes */
9aebfd4a2200ab Sean Wang 2019-03-08  530  	skb_trim(skb, skb->len - pad_size);
9aebfd4a2200ab Sean Wang 2019-03-08  531  
9aebfd4a2200ab Sean Wang 2019-03-08  532  	/* Complete frame */
9aebfd4a2200ab Sean Wang 2019-03-08  533  	(&pkts[i])->recv(bdev->hdev, skb);
9aebfd4a2200ab Sean Wang 2019-03-08  534  
bcaa7d72dffddf Sean Wang 2019-04-18  535  	bdev->hdev->stat.byte_rx += rx_size;
bcaa7d72dffddf Sean Wang 2019-04-18  536  
9aebfd4a2200ab Sean Wang 2019-03-08  537  	return 0;
9aebfd4a2200ab Sean Wang 2019-03-08  538  
9aebfd4a2200ab Sean Wang 2019-03-08  539  err_kfree_skb:
9aebfd4a2200ab Sean Wang 2019-03-08  540  	kfree_skb(skb);
9aebfd4a2200ab Sean Wang 2019-03-08  541  
9aebfd4a2200ab Sean Wang 2019-03-08  542  	return err;
9aebfd4a2200ab Sean Wang 2019-03-08  543  }
9aebfd4a2200ab Sean Wang 2019-03-08  544  

:::::: The code at line 442 was first introduced by commit
:::::: 9aebfd4a2200ab8075e44379c758bccefdc589bb Bluetooth: mediatek: add support for MediaTek MT7663S and MT7668S SDIO devices

:::::: TO: Sean Wang <sean.wang@mediatek.com>
:::::: CC: Marcel Holtmann <marcel@holtmann.org>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

             reply	other threads:[~2025-08-29 20:35 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-29 20:34 kernel test robot [this message]
2025-08-30  0:50 ` [PATCH] Bluetooth: btmtksdio: Fix build after header cleanup Calvin Owens
2025-08-30  1:20   ` bluez.test.bot
2025-08-30  5:11   ` [PATCH] " Paul Menzel
2025-08-30 19:32     ` Calvin Owens
2025-09-02 15:29       ` Luiz Augusto von Dentz
2025-09-02 15:43         ` [PATCH v2] Bluetooth: " Calvin Owens
2025-09-02 16:20           ` patchwork-bot+bluetooth
2025-09-03 14:04           ` Calvin Owens
2025-09-03 14:06             ` [PATCH v3] " Calvin Owens
2025-09-03 14:17               ` [v3] " bluez.test.bot
2025-09-03 15:29               ` [PATCH v3] " Paul Menzel
2025-09-04 16:30               ` patchwork-bot+bluetooth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202508300413.OnIedvRh-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=calvin@wbinvd.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=luiz.von.dentz@intel.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=pmenzel@molgen.mpg.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.