linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Bluez PATCH v2] Bluetooth: L2CAP: handle l2cap config request during open state
@ 2020-03-12  4:35 Howard Chung
  2020-03-12  7:23 ` Marcel Holtmann
  0 siblings, 1 reply; 2+ messages in thread
From: Howard Chung @ 2020-03-12  4:35 UTC (permalink / raw)
  To: linux-bluetooth, marcel
  Cc: chromeos-bluetooth-upstreaming, Howard Chung, David S. Miller,
	Johan Hedberg, netdev, linux-kernel, Jakub Kicinski

According to Core Spec Version 5.2 | Vol 3, Part A 6.1.5,
the incoming L2CAP_ConfigReq should be handled during
OPEN state.

The section below shows the btmon trace when running
L2CAP/COS/CFD/BV-12-C before and after this change.

=== Before ===
...
> ACL Data RX: Handle 256 flags 0x02 dlen 12                #22
      L2CAP: Connection Request (0x02) ident 2 len 4
        PSM: 1 (0x0001)
        Source CID: 65
< ACL Data TX: Handle 256 flags 0x00 dlen 16                #23
      L2CAP: Connection Response (0x03) ident 2 len 8
        Destination CID: 64
        Source CID: 65
        Result: Connection successful (0x0000)
        Status: No further information available (0x0000)
< ACL Data TX: Handle 256 flags 0x00 dlen 12                #24
      L2CAP: Configure Request (0x04) ident 2 len 4
        Destination CID: 65
        Flags: 0x0000
> HCI Event: Number of Completed Packets (0x13) plen 5      #25
        Num handles: 1
        Handle: 256
        Count: 1
> HCI Event: Number of Completed Packets (0x13) plen 5      #26
        Num handles: 1
        Handle: 256
        Count: 1
> ACL Data RX: Handle 256 flags 0x02 dlen 16                #27
      L2CAP: Configure Request (0x04) ident 3 len 8
        Destination CID: 64
        Flags: 0x0000
        Option: Unknown (0x10) [hint]
        01 00                                            ..
< ACL Data TX: Handle 256 flags 0x00 dlen 18                #28
      L2CAP: Configure Response (0x05) ident 3 len 10
        Source CID: 65
        Flags: 0x0000
        Result: Success (0x0000)
        Option: Maximum Transmission Unit (0x01) [mandatory]
          MTU: 672
> HCI Event: Number of Completed Packets (0x13) plen 5      #29
        Num handles: 1
        Handle: 256
        Count: 1
> ACL Data RX: Handle 256 flags 0x02 dlen 14                #30
      L2CAP: Configure Response (0x05) ident 2 len 6
        Source CID: 64
        Flags: 0x0000
        Result: Success (0x0000)
> ACL Data RX: Handle 256 flags 0x02 dlen 20                #31
      L2CAP: Configure Request (0x04) ident 3 len 12
        Destination CID: 64
        Flags: 0x0000
        Option: Unknown (0x10) [hint]
        01 00 91 02 11 11                                ......
< ACL Data TX: Handle 256 flags 0x00 dlen 14                #32
      L2CAP: Command Reject (0x01) ident 3 len 6
        Reason: Invalid CID in request (0x0002)
        Destination CID: 64
        Source CID: 65
> HCI Event: Number of Completed Packets (0x13) plen 5      #33
        Num handles: 1
        Handle: 256
        Count: 1
...
=== After ===
...
> ACL Data RX: Handle 256 flags 0x02 dlen 12               #22
      L2CAP: Connection Request (0x02) ident 2 len 4
        PSM: 1 (0x0001)
        Source CID: 65
< ACL Data TX: Handle 256 flags 0x00 dlen 16               #23
      L2CAP: Connection Response (0x03) ident 2 len 8
        Destination CID: 64
        Source CID: 65
        Result: Connection successful (0x0000)
        Status: No further information available (0x0000)
< ACL Data TX: Handle 256 flags 0x00 dlen 12               #24
      L2CAP: Configure Request (0x04) ident 2 len 4
        Destination CID: 65
        Flags: 0x0000
> HCI Event: Number of Completed Packets (0x13) plen 5     #25
        Num handles: 1
        Handle: 256
        Count: 1
> HCI Event: Number of Completed Packets (0x13) plen 5     #26
        Num handles: 1
        Handle: 256
        Count: 1
> ACL Data RX: Handle 256 flags 0x02 dlen 16               #27
      L2CAP: Configure Request (0x04) ident 3 len 8
        Destination CID: 64
        Flags: 0x0000
        Option: Unknown (0x10) [hint]
        01 00                                            ..
< ACL Data TX: Handle 256 flags 0x00 dlen 18               #28
      L2CAP: Configure Response (0x05) ident 3 len 10
        Source CID: 65
        Flags: 0x0000
        Result: Success (0x0000)
        Option: Maximum Transmission Unit (0x01) [mandatory]
          MTU: 672
> HCI Event: Number of Completed Packets (0x13) plen 5     #29
        Num handles: 1
        Handle: 256
        Count: 1
> ACL Data RX: Handle 256 flags 0x02 dlen 14               #30
      L2CAP: Configure Response (0x05) ident 2 len 6
        Source CID: 64
        Flags: 0x0000
        Result: Success (0x0000)
> ACL Data RX: Handle 256 flags 0x02 dlen 20               #31
      L2CAP: Configure Request (0x04) ident 3 len 12
        Destination CID: 64
        Flags: 0x0000
        Option: Unknown (0x10) [hint]
        01 00 91 02 11 11                                .....
< ACL Data TX: Handle 256 flags 0x00 dlen 18               #32
      L2CAP: Configure Response (0x05) ident 3 len 10
        Source CID: 65
        Flags: 0x0000
        Result: Success (0x0000)
        Option: Maximum Transmission Unit (0x01) [mandatory]
          MTU: 672
< ACL Data TX: Handle 256 flags 0x00 dlen 12               #33
      L2CAP: Configure Request (0x04) ident 3 len 4
        Destination CID: 65
        Flags: 0x0000
> HCI Event: Number of Completed Packets (0x13) plen 5     #34
        Num handles: 1
        Handle: 256
        Count: 1
> HCI Event: Number of Completed Packets (0x13) plen 5     #35
        Num handles: 1
        Handle: 256
        Count: 1
...

Signed-off-by: Howard Chung <howardchung@google.com>

---

Changes in v2:
- Updated commit messages

 net/bluetooth/l2cap_core.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 697c0f7f2c1a..5e6e35ab44dd 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -4300,7 +4300,8 @@ static inline int l2cap_config_req(struct l2cap_conn *conn,
 		return 0;
 	}
 
-	if (chan->state != BT_CONFIG && chan->state != BT_CONNECT2) {
+	if (chan->state != BT_CONFIG && chan->state != BT_CONNECT2 &&
+	    chan->state != BT_CONNECTED) {
 		cmd_reject_invalid_cid(conn, cmd->ident, chan->scid,
 				       chan->dcid);
 		goto unlock;
-- 
2.25.1.481.gfbce0eb801-goog


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [Bluez PATCH v2] Bluetooth: L2CAP: handle l2cap config request during open state
  2020-03-12  4:35 [Bluez PATCH v2] Bluetooth: L2CAP: handle l2cap config request during open state Howard Chung
@ 2020-03-12  7:23 ` Marcel Holtmann
  0 siblings, 0 replies; 2+ messages in thread
From: Marcel Holtmann @ 2020-03-12  7:23 UTC (permalink / raw)
  To: Howard Chung
  Cc: Bluez mailing list, chromeos-bluetooth-upstreaming,
	David S. Miller, Johan Hedberg, netdev, linux-kernel,
	Jakub Kicinski

Hi Howard,

> According to Core Spec Version 5.2 | Vol 3, Part A 6.1.5,
> the incoming L2CAP_ConfigReq should be handled during
> OPEN state.
> 
> The section below shows the btmon trace when running
> L2CAP/COS/CFD/BV-12-C before and after this change.
> 
> === Before ===
> ...
>> ACL Data RX: Handle 256 flags 0x02 dlen 12                #22
>      L2CAP: Connection Request (0x02) ident 2 len 4
>        PSM: 1 (0x0001)
>        Source CID: 65
> < ACL Data TX: Handle 256 flags 0x00 dlen 16                #23
>      L2CAP: Connection Response (0x03) ident 2 len 8
>        Destination CID: 64
>        Source CID: 65
>        Result: Connection successful (0x0000)
>        Status: No further information available (0x0000)
> < ACL Data TX: Handle 256 flags 0x00 dlen 12                #24
>      L2CAP: Configure Request (0x04) ident 2 len 4
>        Destination CID: 65
>        Flags: 0x0000
>> HCI Event: Number of Completed Packets (0x13) plen 5      #25
>        Num handles: 1
>        Handle: 256
>        Count: 1
>> HCI Event: Number of Completed Packets (0x13) plen 5      #26
>        Num handles: 1
>        Handle: 256
>        Count: 1
>> ACL Data RX: Handle 256 flags 0x02 dlen 16                #27
>      L2CAP: Configure Request (0x04) ident 3 len 8
>        Destination CID: 64
>        Flags: 0x0000
>        Option: Unknown (0x10) [hint]
>        01 00                                            ..
> < ACL Data TX: Handle 256 flags 0x00 dlen 18                #28
>      L2CAP: Configure Response (0x05) ident 3 len 10
>        Source CID: 65
>        Flags: 0x0000
>        Result: Success (0x0000)
>        Option: Maximum Transmission Unit (0x01) [mandatory]
>          MTU: 672
>> HCI Event: Number of Completed Packets (0x13) plen 5      #29
>        Num handles: 1
>        Handle: 256
>        Count: 1
>> ACL Data RX: Handle 256 flags 0x02 dlen 14                #30
>      L2CAP: Configure Response (0x05) ident 2 len 6
>        Source CID: 64
>        Flags: 0x0000
>        Result: Success (0x0000)
>> ACL Data RX: Handle 256 flags 0x02 dlen 20                #31
>      L2CAP: Configure Request (0x04) ident 3 len 12
>        Destination CID: 64
>        Flags: 0x0000
>        Option: Unknown (0x10) [hint]
>        01 00 91 02 11 11                                ......
> < ACL Data TX: Handle 256 flags 0x00 dlen 14                #32
>      L2CAP: Command Reject (0x01) ident 3 len 6
>        Reason: Invalid CID in request (0x0002)
>        Destination CID: 64
>        Source CID: 65
>> HCI Event: Number of Completed Packets (0x13) plen 5      #33
>        Num handles: 1
>        Handle: 256
>        Count: 1
> ...
> === After ===
> ...
>> ACL Data RX: Handle 256 flags 0x02 dlen 12               #22
>      L2CAP: Connection Request (0x02) ident 2 len 4
>        PSM: 1 (0x0001)
>        Source CID: 65
> < ACL Data TX: Handle 256 flags 0x00 dlen 16               #23
>      L2CAP: Connection Response (0x03) ident 2 len 8
>        Destination CID: 64
>        Source CID: 65
>        Result: Connection successful (0x0000)
>        Status: No further information available (0x0000)
> < ACL Data TX: Handle 256 flags 0x00 dlen 12               #24
>      L2CAP: Configure Request (0x04) ident 2 len 4
>        Destination CID: 65
>        Flags: 0x0000
>> HCI Event: Number of Completed Packets (0x13) plen 5     #25
>        Num handles: 1
>        Handle: 256
>        Count: 1
>> HCI Event: Number of Completed Packets (0x13) plen 5     #26
>        Num handles: 1
>        Handle: 256
>        Count: 1
>> ACL Data RX: Handle 256 flags 0x02 dlen 16               #27
>      L2CAP: Configure Request (0x04) ident 3 len 8
>        Destination CID: 64
>        Flags: 0x0000
>        Option: Unknown (0x10) [hint]
>        01 00                                            ..
> < ACL Data TX: Handle 256 flags 0x00 dlen 18               #28
>      L2CAP: Configure Response (0x05) ident 3 len 10
>        Source CID: 65
>        Flags: 0x0000
>        Result: Success (0x0000)
>        Option: Maximum Transmission Unit (0x01) [mandatory]
>          MTU: 672
>> HCI Event: Number of Completed Packets (0x13) plen 5     #29
>        Num handles: 1
>        Handle: 256
>        Count: 1
>> ACL Data RX: Handle 256 flags 0x02 dlen 14               #30
>      L2CAP: Configure Response (0x05) ident 2 len 6
>        Source CID: 64
>        Flags: 0x0000
>        Result: Success (0x0000)
>> ACL Data RX: Handle 256 flags 0x02 dlen 20               #31
>      L2CAP: Configure Request (0x04) ident 3 len 12
>        Destination CID: 64
>        Flags: 0x0000
>        Option: Unknown (0x10) [hint]
>        01 00 91 02 11 11                                .....
> < ACL Data TX: Handle 256 flags 0x00 dlen 18               #32
>      L2CAP: Configure Response (0x05) ident 3 len 10
>        Source CID: 65
>        Flags: 0x0000
>        Result: Success (0x0000)
>        Option: Maximum Transmission Unit (0x01) [mandatory]
>          MTU: 672
> < ACL Data TX: Handle 256 flags 0x00 dlen 12               #33
>      L2CAP: Configure Request (0x04) ident 3 len 4
>        Destination CID: 65
>        Flags: 0x0000
>> HCI Event: Number of Completed Packets (0x13) plen 5     #34
>        Num handles: 1
>        Handle: 256
>        Count: 1
>> HCI Event: Number of Completed Packets (0x13) plen 5     #35
>        Num handles: 1
>        Handle: 256
>        Count: 1
> ...
> 
> Signed-off-by: Howard Chung <howardchung@google.com>
> 
> ---
> 
> Changes in v2:
> - Updated commit messages
> 
> net/bluetooth/l2cap_core.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)

patch has been applied to bluetooth-next tree.

Regards

Marcel


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-03-12  7:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-12  4:35 [Bluez PATCH v2] Bluetooth: L2CAP: handle l2cap config request during open state Howard Chung
2020-03-12  7:23 ` Marcel Holtmann

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).