Bluetooth: btmtkuart: fix recv_buf() return value
authorFrancesco Dolcini <francesco.dolcini@toradex.com>
Mon, 11 Dec 2023 16:40:19 +0000 (17:40 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 23:35:29 +0000 (15:35 -0800)
[ Upstream commit 64057f051f20c2a2184b9db7f8037d928d68a4f4 ]

Serdev recv_buf() callback is supposed to return the amount of bytes
consumed, therefore an int in between 0 and count.

Do not return negative number in case of issue, just print an error and
return count. This fixes a WARN in ttyport_receive_buf().

Link: https://lore.kernel.org/all/087be419-ec6b-47ad-851a-5e1e3ea5cfcc@kernel.org/
Fixes: 7237c4c9ec92 ("Bluetooth: mediatek: Add protocol support for MediaTek serial devices")
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/bluetooth/btmtkuart.c

index 935feab..203a000 100644 (file)
@@ -336,7 +336,7 @@ mtk_stp_split(struct btmtkuart_dev *bdev, const unsigned char *data, int count,
        return data;
 }
 
-static int btmtkuart_recv(struct hci_dev *hdev, const u8 *data, size_t count)
+static void btmtkuart_recv(struct hci_dev *hdev, const u8 *data, size_t count)
 {
        struct btmtkuart_dev *bdev = hci_get_drvdata(hdev);
        const unsigned char *p_left = data, *p_h4;
@@ -375,25 +375,20 @@ static int btmtkuart_recv(struct hci_dev *hdev, const u8 *data, size_t count)
                        bt_dev_err(bdev->hdev,
                                   "Frame reassembly failed (%d)", err);
                        bdev->rx_skb = NULL;
-                       return err;
+                       return;
                }
 
                sz_left -= sz_h4;
                p_left += sz_h4;
        }
-
-       return 0;
 }
 
 static int btmtkuart_receive_buf(struct serdev_device *serdev, const u8 *data,
                                 size_t count)
 {
        struct btmtkuart_dev *bdev = serdev_device_get_drvdata(serdev);
-       int err;
 
-       err = btmtkuart_recv(bdev->hdev, data, count);
-       if (err < 0)
-               return err;
+       btmtkuart_recv(bdev->hdev, data, count);
 
        bdev->hdev->stat.byte_rx += count;