2013-06-28 10:14:32

by Syam Sidhardhan

[permalink] [raw]
Subject: [PATCH 1/1 v1] Bluetooth: Fix ACL alive for long in case of non pariable devices

For certain devices (ex: HID mouse), support for authentication,
pairing and bonding is optional. For such devices, the ACL alive
for too long after the l2cap disconnection.

To avoid keep ACL alive for too long, set the ACL timeout back to
HCI_DISCONN_TIMEOUT when l2cap is connected.

While merging the commit id:a9ea3ed9b71cc3271dd59e76f65748adcaa76422
this issue might have introduce.

Signed-off-by: Sang-Ki Park <[email protected]>
Signed-off-by: Syam Sidhardhan <[email protected]>
---
net/bluetooth/l2cap_core.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 9af3a76..80df756 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -1383,6 +1383,10 @@ static void l2cap_conn_ready(struct l2cap_conn *conn)

BT_DBG("conn %p", conn);

+ hci_conn_hold(conn->hcon);
+ conn->hcon->disc_timeout = HCI_DISCONN_TIMEOUT;
+ hci_conn_drop(conn->hcon);
+
/* For outgoing pairing which doesn't necessarily have an
* associated socket (e.g. mgmt_pair_device).
*/
--
1.7.9.5



2013-06-28 16:23:27

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH 1/1 v1] Bluetooth: Fix ACL alive for long in case of non pariable devices

Hi Syam,

> For certain devices (ex: HID mouse), support for authentication,
> pairing and bonding is optional. For such devices, the ACL alive
> for too long after the l2cap disconnection.
>
> To avoid keep ACL alive for too long, set the ACL timeout back to
> HCI_DISCONN_TIMEOUT when l2cap is connected.
>
> While merging the commit id:a9ea3ed9b71cc3271dd59e76f65748adcaa76422
> this issue might have introduce.
>
> Signed-off-by: Sang-Ki Park <[email protected]>
> Signed-off-by: Syam Sidhardhan <[email protected]>
> ---
> net/bluetooth/l2cap_core.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
> index 9af3a76..80df756 100644
> --- a/net/bluetooth/l2cap_core.c
> +++ b/net/bluetooth/l2cap_core.c
> @@ -1383,6 +1383,10 @@ static void l2cap_conn_ready(struct l2cap_conn *conn)
>
> BT_DBG("conn %p", conn);
>

might be a good idea to add a comment here on why we are resetting the disc_timeout back to the original value.

> + hci_conn_hold(conn->hcon);
> + conn->hcon->disc_timeout = HCI_DISCONN_TIMEOUT;
> + hci_conn_drop(conn->hcon);
> +
> /* For outgoing pairing which doesn't necessarily have an
> * associated socket (e.g. mgmt_pair_device).
> */

Regards

Marcel


2013-07-17 16:28:44

by Syam Sidhardhan

[permalink] [raw]
Subject: Re: [PATCH 1/1 v1] Bluetooth: Fix ACL alive for long in case of non pariable devices

Hi,


On Fri, Jun 28, 2013 at 9:53 PM, Marcel Holtmann <[email protected]> wrote:
>
> Hi Syam,
>
> > For certain devices (ex: HID mouse), support for authentication,
> > pairing and bonding is optional. For such devices, the ACL alive
> > for too long after the l2cap disconnection.
> >
> > To avoid keep ACL alive for too long, set the ACL timeout back to
> > HCI_DISCONN_TIMEOUT when l2cap is connected.
> >
> > While merging the commit id:a9ea3ed9b71cc3271dd59e76f65748adcaa76422
> > this issue might have introduce.
> >
> > Signed-off-by: Sang-Ki Park <[email protected]>
> > Signed-off-by: Syam Sidhardhan <[email protected]>
> > ---
> > net/bluetooth/l2cap_core.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
> > index 9af3a76..80df756 100644
> > --- a/net/bluetooth/l2cap_core.c
> > +++ b/net/bluetooth/l2cap_core.c
> > @@ -1383,6 +1383,10 @@ static void l2cap_conn_ready(struct l2cap_conn *conn)
> >
> > BT_DBG("conn %p", conn);
> >
>
> might be a good idea to add a comment here on why we are resetting the disc_timeout back to the original value.
>

Ok, Now I'll send a patch with the comment added.

> > + hci_conn_hold(conn->hcon);
> > + conn->hcon->disc_timeout = HCI_DISCONN_TIMEOUT;
> > + hci_conn_drop(conn->hcon);
> > +
> > /* For outgoing pairing which doesn't necessarily have an
> > * associated socket (e.g. mgmt_pair_device).
> > */
>
Regards,
Syam