* [PATCH v2 0/3] Bluetooth: fix recv_buf() return value
@ 2023-12-11 16:40 Francesco Dolcini
2023-12-11 16:40 ` [PATCH v2 1/3] Bluetooth: btnxpuart: " Francesco Dolcini
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Francesco Dolcini @ 2023-12-11 16:40 UTC (permalink / raw)
To: Sean Wang, Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
Matthias Brugger, AngeloGioacchino Del Regno, Amitkumar Karwar,
Neeraj Kale
Cc: Francesco Dolcini, linux-bluetooth, linux-mediatek, linux-kernel,
linux-arm-kernel, Jiri Slaby
From: Francesco Dolcini <francesco.dolcini@toradex.com>
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().
In addition to that a small cleanup patch is added on btnxpuart to remove a useless assignment.
v2:
- improved commit messages
Francesco Dolcini (3):
Bluetooth: btnxpuart: fix recv_buf() return value
Bluetooth: btmtkuart: fix recv_buf() return value
Bluetooth: btnxpuart: remove useless assignment
drivers/bluetooth/btmtkuart.c | 11 +++--------
drivers/bluetooth/btnxpuart.c | 8 +++-----
2 files changed, 6 insertions(+), 13 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/3] Bluetooth: btnxpuart: fix recv_buf() return value
2023-12-11 16:40 [PATCH v2 0/3] Bluetooth: fix recv_buf() return value Francesco Dolcini
@ 2023-12-11 16:40 ` Francesco Dolcini
2023-12-11 16:40 ` [PATCH v2 2/3] Bluetooth: btmtkuart: " Francesco Dolcini
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Francesco Dolcini @ 2023-12-11 16:40 UTC (permalink / raw)
To: Amitkumar Karwar, Neeraj Kale, Marcel Holtmann, Johan Hedberg,
Luiz Augusto von Dentz
Cc: Francesco Dolcini, linux-bluetooth, linux-kernel, Jiri Slaby
From: Francesco Dolcini <francesco.dolcini@toradex.com>
Serdev recv_buf() callback is supposed to return the amount of bytes
consumed, therefore an int in between 0 and count.
Do not return a negative number in case of issue, just print an error
and return count. Before this change, in case of error, the returned
negative number was internally converted to 0 in ttyport_receive_buf,
now when the receive buffer is corrupted we return the size of the whole
received data (`count`). This should allow for better recovery in case
receiver/transmitter get out of sync if some data is lost.
This fixes a WARN in ttyport_receive_buf().
Bluetooth: hci0: Frame reassembly failed (-84)
------------[ cut here ]------------
serial serial0: receive_buf returns -84 (count = 6)
WARNING: CPU: 0 PID: 37 at drivers/tty/serdev/serdev-ttyport.c:37 ttyport_receive_buf+0xd8/0xf8
Modules linked in: mwifiex_sdio(+) ...
CPU: 0 PID: 37 Comm: kworker/u4:2 Not tainted 6.7.0-rc2-00147-gf1a09972a45a #1
Hardware name: Toradex Verdin AM62 WB on Verdin Development Board (DT)
Workqueue: events_unbound flush_to_ldisc
pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : ttyport_receive_buf+0xd8/0xf8
lr : ttyport_receive_buf+0xd8/0xf8
...
Call trace:
ttyport_receive_buf+0xd8/0xf8
flush_to_ldisc+0xbc/0x1a4
process_scheduled_works+0x16c/0x28c
Closes: https://lore.kernel.org/all/ZWEIhcUXfutb5SY6@francesco-nb.int.toradex.com/
Fixes: 689ca16e5232 ("Bluetooth: NXP: Add protocol support for NXP Bluetooth chipsets")
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
---
v2:
- improve commit message
---
drivers/bluetooth/btnxpuart.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c
index b7e66b7ac570..951fe3014a3f 100644
--- a/drivers/bluetooth/btnxpuart.c
+++ b/drivers/bluetooth/btnxpuart.c
@@ -1276,11 +1276,10 @@ static int btnxpuart_receive_buf(struct serdev_device *serdev, const u8 *data,
if (IS_ERR(nxpdev->rx_skb)) {
int err = PTR_ERR(nxpdev->rx_skb);
/* Safe to ignore out-of-sync bootloader signatures */
- if (is_fw_downloading(nxpdev))
- return count;
- bt_dev_err(nxpdev->hdev, "Frame reassembly failed (%d)", err);
+ if (!is_fw_downloading(nxpdev))
+ bt_dev_err(nxpdev->hdev, "Frame reassembly failed (%d)", err);
nxpdev->rx_skb = NULL;
- return err;
+ return count;
}
if (!is_fw_downloading(nxpdev))
nxpdev->hdev->stat.byte_rx += count;
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 2/3] Bluetooth: btmtkuart: fix recv_buf() return value
2023-12-11 16:40 [PATCH v2 0/3] Bluetooth: fix recv_buf() return value Francesco Dolcini
2023-12-11 16:40 ` [PATCH v2 1/3] Bluetooth: btnxpuart: " Francesco Dolcini
@ 2023-12-11 16:40 ` Francesco Dolcini
2023-12-11 16:40 ` [PATCH v2 3/3] Bluetooth: btnxpuart: remove useless assignment Francesco Dolcini
2023-12-12 16:20 ` [PATCH v2 0/3] Bluetooth: fix recv_buf() return value patchwork-bot+bluetooth
3 siblings, 0 replies; 5+ messages in thread
From: Francesco Dolcini @ 2023-12-11 16:40 UTC (permalink / raw)
To: Sean Wang, Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
Matthias Brugger, AngeloGioacchino Del Regno
Cc: Francesco Dolcini, linux-bluetooth, linux-mediatek, linux-kernel,
linux-arm-kernel, Jiri Slaby
From: Francesco Dolcini <francesco.dolcini@toradex.com>
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>
---
drivers/bluetooth/btmtkuart.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/drivers/bluetooth/btmtkuart.c b/drivers/bluetooth/btmtkuart.c
index 935feab815d9..203a000a84e3 100644
--- a/drivers/bluetooth/btmtkuart.c
+++ b/drivers/bluetooth/btmtkuart.c
@@ -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;
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 3/3] Bluetooth: btnxpuart: remove useless assignment
2023-12-11 16:40 [PATCH v2 0/3] Bluetooth: fix recv_buf() return value Francesco Dolcini
2023-12-11 16:40 ` [PATCH v2 1/3] Bluetooth: btnxpuart: " Francesco Dolcini
2023-12-11 16:40 ` [PATCH v2 2/3] Bluetooth: btmtkuart: " Francesco Dolcini
@ 2023-12-11 16:40 ` Francesco Dolcini
2023-12-12 16:20 ` [PATCH v2 0/3] Bluetooth: fix recv_buf() return value patchwork-bot+bluetooth
3 siblings, 0 replies; 5+ messages in thread
From: Francesco Dolcini @ 2023-12-11 16:40 UTC (permalink / raw)
To: Amitkumar Karwar, Neeraj Kale, Marcel Holtmann, Johan Hedberg,
Luiz Augusto von Dentz
Cc: Francesco Dolcini, linux-bluetooth, linux-kernel, Jiri Slaby
From: Francesco Dolcini <francesco.dolcini@toradex.com>
Remove useless assignment of rx_skb to NULL in case the skb is in error,
this is already done in h4_recv_buf() that is executed a few lines
before.
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
---
drivers/bluetooth/btnxpuart.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c
index 951fe3014a3f..b7c56be078f8 100644
--- a/drivers/bluetooth/btnxpuart.c
+++ b/drivers/bluetooth/btnxpuart.c
@@ -1278,7 +1278,6 @@ static int btnxpuart_receive_buf(struct serdev_device *serdev, const u8 *data,
/* Safe to ignore out-of-sync bootloader signatures */
if (!is_fw_downloading(nxpdev))
bt_dev_err(nxpdev->hdev, "Frame reassembly failed (%d)", err);
- nxpdev->rx_skb = NULL;
return count;
}
if (!is_fw_downloading(nxpdev))
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 0/3] Bluetooth: fix recv_buf() return value
2023-12-11 16:40 [PATCH v2 0/3] Bluetooth: fix recv_buf() return value Francesco Dolcini
` (2 preceding siblings ...)
2023-12-11 16:40 ` [PATCH v2 3/3] Bluetooth: btnxpuart: remove useless assignment Francesco Dolcini
@ 2023-12-12 16:20 ` patchwork-bot+bluetooth
3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+bluetooth @ 2023-12-12 16:20 UTC (permalink / raw)
To: Francesco Dolcini
Cc: sean.wang, marcel, johan.hedberg, luiz.dentz, matthias.bgg,
angelogioacchino.delregno, amitkumar.karwar, neeraj.sanjaykale,
francesco.dolcini, linux-bluetooth, linux-mediatek, linux-kernel,
linux-arm-kernel, jirislaby
Hello:
This series was applied to bluetooth/bluetooth-next.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:
On Mon, 11 Dec 2023 17:40:17 +0100 you wrote:
> From: Francesco Dolcini <francesco.dolcini@toradex.com>
>
> 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().
>
> In addition to that a small cleanup patch is added on btnxpuart to remove a useless assignment.
>
> [...]
Here is the summary with links:
- [v2,1/3] Bluetooth: btnxpuart: fix recv_buf() return value
https://git.kernel.org/bluetooth/bluetooth-next/c/7954bbcdd7ea
- [v2,2/3] Bluetooth: btmtkuart: fix recv_buf() return value
https://git.kernel.org/bluetooth/bluetooth-next/c/687d2de93b11
- [v2,3/3] Bluetooth: btnxpuart: remove useless assignment
https://git.kernel.org/bluetooth/bluetooth-next/c/99f188d71731
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-12-12 16:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-11 16:40 [PATCH v2 0/3] Bluetooth: fix recv_buf() return value Francesco Dolcini
2023-12-11 16:40 ` [PATCH v2 1/3] Bluetooth: btnxpuart: " Francesco Dolcini
2023-12-11 16:40 ` [PATCH v2 2/3] Bluetooth: btmtkuart: " Francesco Dolcini
2023-12-11 16:40 ` [PATCH v2 3/3] Bluetooth: btnxpuart: remove useless assignment Francesco Dolcini
2023-12-12 16:20 ` [PATCH v2 0/3] Bluetooth: fix recv_buf() return value patchwork-bot+bluetooth
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox