Re: [PATCH] Bluetooth: hci_mrvl: Fix wrong return value check of wait_on_bit_timeout()

Loic Poulain <[email protected]>
Newsgroups org.kernel.vger.linux-bluetooth,org.kernel.vger.linux-kernel
Message-ID <CAFEp6-0Z+Y9ym=eMx6i-bpS4R+46H6p51KcdaSPG++8R05JKXA@mail.gmail.com>
On Mon, Aug 24, 2026 at 9:13 AM Gongwei Li <[email protected]> wrote:
>
> From: Gongwei Li <[email protected]>
>
> wait_on_bit_timeout() returns 0 if the bit was cleared, -EINTR if the
> process received a signal and the mode permitted wake up on that signal,
> or -EAGAIN if the timeout elapsed.  It never returns 1.
>
> Hence the check "err == 1" in mrvl_load_firmware() is dead code: when
> the waiting task is interrupted by a signal (-EINTR), the code falls
> into the "else if (err)" branch and misreports it as "Firmware request
> timeout" with -ETIMEDOUT instead of propagating -EINTR.
>
> Fix this by testing for -EINTR so that an interrupted firmware load is
> properly detected and reported.
>
> Fixes: 162f812f23ba ("Bluetooth: hci_uart: Add Marvell support")
> Signed-off-by: Gongwei Li <[email protected]>
> ---
>  drivers/bluetooth/hci_mrvl.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/bluetooth/hci_mrvl.c b/drivers/bluetooth/hci_mrvl.c
> index 516b8f74c434..52badd1fe81a 100644
> --- a/drivers/bluetooth/hci_mrvl.c
> +++ b/drivers/bluetooth/hci_mrvl.c
> @@ -307,7 +307,7 @@ static int mrvl_load_firmware(struct hci_dev *hdev, const char *name)
>                 err = wait_on_bit_timeout(&mrvl->flags, STATE_FW_REQ_PENDING,
>                                           TASK_INTERRUPTIBLE,
>                                           msecs_to_jiffies(2000));
> -               if (err == 1) {
> +               if (err == -EINTR) {
>                         bt_dev_err(hdev, "Firmware load interrupted");
>                         err = -EINTR;

Then we can drop the above line.

>                         break;
> --
> 2.25.1
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.