Commit dd870c91 authored by Loic Poulain's avatar Loic Poulain Committed by Greg Kroah-Hartman

Bluetooth: Fix HCI H5 corrupted ack value

commit 4807b518 upstream.

In this expression: seq = (seq - 1) % 8
seq (u8) is implicitly converted to an int in the arithmetic operation.
So if seq value is 0, operation is ((0 - 1) % 8) => (-1 % 8) => -1.
The new seq value is 0xff which is an invalid ACK value, we expect 0x07.
It leads to frequent dropped ACK and retransmission.
Fix this by using '&' binary operator instead of '%'.
Signed-off-by: default avatarLoic Poulain <loic.poulain@intel.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 3a0cda04
...@@ -237,7 +237,7 @@ static void h5_pkt_cull(struct h5 *h5) ...@@ -237,7 +237,7 @@ static void h5_pkt_cull(struct h5 *h5)
break; break;
to_remove--; to_remove--;
seq = (seq - 1) % 8; seq = (seq - 1) & 0x07;
} }
if (seq != h5->rx_ack) if (seq != h5->rx_ack)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment