linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
To: Calvin Owens <calvin@wbinvd.org>
Cc: Paul Menzel <pmenzel@molgen.mpg.de>,
	linux-kernel@vger.kernel.org,  linux-bluetooth@vger.kernel.org,
	 Luiz Augusto von Dentz <luiz.von.dentz@intel.com>,
	oe-kbuild-all@lists.linux.dev,
	 Marcel Holtmann <marcel@holtmann.org>,
	Sean Wang <sean.wang@mediatek.com>,
	 linux-mediatek@lists.infradead.org
Subject: Re: [PATCH] Bluetooth: btmtksdio: Fix build after header cleanup
Date: Tue, 2 Sep 2025 11:29:13 -0400	[thread overview]
Message-ID: <CABBYNZJBDgQHwmx82H2XJ-LCeOsxc77PPo6NA4zzT0dt7Uxddw@mail.gmail.com> (raw)
In-Reply-To: <aLNRvzXE4O9dKZoN@mozart.vkv.me>

Hi Calvin,

On Sat, Aug 30, 2025 at 3:32 PM Calvin Owens <calvin@wbinvd.org> wrote:
>
> On Saturday 08/30 at 07:11 +0200, Paul Menzel wrote:
> > Dear Calvin,
> >
> >
> > Thank you for your patch, and addressing the regression right away.
> >
> > Am 30.08.25 um 02:50 schrieb Calvin Owens:
> > > Syzbot found a randconfig which fails after my recent patch:
> > >
> > >      drivers/bluetooth/btmtksdio.c:442:33: error: array type has incomplete element type ‘struct h4_recv_pkt’
> > >        442 | static const struct h4_recv_pkt mtk_recv_pkts[] = {
> > >            |                                 ^~~~~~~~~~~~~
> > >      drivers/bluetooth/btmtksdio.c:443:11: error: ‘H4_RECV_ACL’ undeclared here (not in a function)
> > >        443 |         { H4_RECV_ACL,      .recv = btmtksdio_recv_acl },
> > >            |           ^~~~~~~~~~~
> > >      drivers/bluetooth/btmtksdio.c:444:11: error: ‘H4_RECV_SCO’ undeclared here (not in a function)
> > >        444 |         { H4_RECV_SCO,      .recv = hci_recv_frame },
> > >            |           ^~~~~~~~~~~
> > >      drivers/bluetooth/btmtksdio.c:445:11: error: ‘H4_RECV_EVENT’ undeclared here (not in a function)
> > >        445 |         { H4_RECV_EVENT,    .recv = btmtksdio_recv_event },
> > >
> > > ...because we can have BT_MTKSDIO=y with BT_HCIUART_H4=n, and the
> > > definitions used here are gated on BT_HCIUART_H4 in hci_uart.h.
> >
> > The drivers below seem to be affected:
> >
> >     drivers/bluetooth/bpa10x.c:     { H4_RECV_EVENT,   .recv =
> > hci_recv_frame },
> >     drivers/bluetooth/btmtksdio.c:  { H4_RECV_EVENT,    .recv =
> > btmtksdio_recv_event },
> >     drivers/bluetooth/btmtkuart.c:  { H4_RECV_EVENT,    .recv =
> > btmtkuart_recv_event },
> >     drivers/bluetooth/btnxpuart.c:  { H4_RECV_EVENT,        .recv =
> > hci_recv_frame },
> >
> > > I think the simplest way to fix this is to remove the gate on the
> > > definitions in hci_uart.h. Since the constants are macros, there's no
> > > runtime cost to doing so, and nothing seems to rely on their absence in
> > > the BT_HCIUART_H4=n case.
> >
> > Looking at the implementation, it looks like they only work with the H4
> > protocol? So maybe, that should be denoted in the Kconfig files?
>
> Thanks for looking Paul.
>
> Yes, my fix will cause a link error with other randconfigs, which my
> 'make randconfig drivers/bluetooth/' test loop missed after I made the
> function prototype always defined, whoops.
>
> We do need the dependencies here, as you note. The btmtksdio case syzbot
> found is the odd one out because it only uses the constants, and doesn't
> call h4_recv_buf().
>
> Hopefully this gets it all:
>
> -----8<-----
> From: Calvin Owens <calvin@wbinvd.org>
> Subject: [PATCH v2] Bluetooth: Fix build after header cleanup
>
> Some Kconfig dependencies are needed after my recent cleanup, since
> the core code has its own option.
>
> Since btmtksdio does not actually call h4_recv_buf(), move the
> definitions it uses outside the BT_HCIUART_H4 gate in hci_uart.h to
> avoid adding a dependency for btmtksdio.
>
> The rest I touched (bpa10x, btmtkuart, and btnxpuart) do really call
> h4_recv_buf(), so the dependency is required, add it for them.
>
> Fixes: 74bcec450eea ("Bluetooth: remove duplicate h4_recv_buf() in header")
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202508300413.OnIedvRh-lkp@intel.com/
> Signed-off-by: Calvin Owens <calvin@wbinvd.org>
> ---
>  drivers/bluetooth/Kconfig    | 6 ++++++
>  drivers/bluetooth/hci_uart.h | 8 ++++----
>  2 files changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/bluetooth/Kconfig b/drivers/bluetooth/Kconfig
> index 4ab32abf0f48..7df69ccb6600 100644
> --- a/drivers/bluetooth/Kconfig
> +++ b/drivers/bluetooth/Kconfig
> @@ -312,7 +312,9 @@ config BT_HCIBCM4377
>
>  config BT_HCIBPA10X
>         tristate "HCI BPA10x USB driver"
> +       depends on BT_HCIUART
>         depends on USB
> +       select BT_HCIUART_H4
>         help
>           Bluetooth HCI BPA10x USB driver.
>           This driver provides support for the Digianswer BPA 100/105 Bluetooth
> @@ -437,8 +439,10 @@ config BT_MTKSDIO
>
>  config BT_MTKUART
>         tristate "MediaTek HCI UART driver"
> +       depends on BT_HCIUART
>         depends on SERIAL_DEV_BUS
>         depends on USB || !BT_HCIBTUSB_MTK
> +       select BT_HCIUART_H4
>         select BT_MTK
>         help
>           MediaTek Bluetooth HCI UART driver.
> @@ -483,7 +487,9 @@ config BT_VIRTIO
>
>  config BT_NXPUART
>         tristate "NXP protocol support"
> +       depends on BT_HCIUART
>         depends on SERIAL_DEV_BUS
> +       select BT_HCIUART_H4
>         select CRC32
>         select CRC8
>         help
> diff --git a/drivers/bluetooth/hci_uart.h b/drivers/bluetooth/hci_uart.h
> index 5ea5dd80e297..cbbe79b241ce 100644
> --- a/drivers/bluetooth/hci_uart.h
> +++ b/drivers/bluetooth/hci_uart.h
> @@ -121,10 +121,6 @@ void hci_uart_set_flow_control(struct hci_uart *hu, bool enable);
>  void hci_uart_set_speeds(struct hci_uart *hu, unsigned int init_speed,
>                          unsigned int oper_speed);
>
> -#ifdef CONFIG_BT_HCIUART_H4
> -int h4_init(void);
> -int h4_deinit(void);
> -
>  struct h4_recv_pkt {
>         u8  type;       /* Packet type */
>         u8  hlen;       /* Header length */
> @@ -162,6 +158,10 @@ struct h4_recv_pkt {
>         .lsize = 2, \
>         .maxlen = HCI_MAX_FRAME_SIZE \
>
> +#ifdef CONFIG_BT_HCIUART_H4
> +int h4_init(void);
> +int h4_deinit(void);
> +
>  struct sk_buff *h4_recv_buf(struct hci_dev *hdev, struct sk_buff *skb,
>                             const unsigned char *buffer, int count,
>                             const struct h4_recv_pkt *pkts, int pkts_count);
> --
> 2.47.2

Please send a v2 then otherwise this is no pickup by the likes of CI
and patchwork.

>


-- 
Luiz Augusto von Dentz

  reply	other threads:[~2025-09-02 15:29 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-29 20:34 [bluetooth-next:master 83/84] drivers/bluetooth/btmtksdio.c:442:33: error: array type has incomplete element type 'struct h4_recv_pkt' kernel test robot
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 [this message]
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

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=CABBYNZJBDgQHwmx82H2XJ-LCeOsxc77PPo6NA4zzT0dt7Uxddw@mail.gmail.com \
    --to=luiz.dentz@gmail.com \
    --cc=calvin@wbinvd.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=luiz.von.dentz@intel.com \
    --cc=marcel@holtmann.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=pmenzel@molgen.mpg.de \
    --cc=sean.wang@mediatek.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).