2011-08-22 13:45:38

by Dmitriy Paliy

[permalink] [raw]
Subject: [PATCH BlueZ v3 0/1] Fix remove temporary link key for No Bonding

Hi,

This patch takes into account comment of Luiz about moving
btd_adapter_remove_bonding in device_set_paired(device, FALSE).

Br,
Dmitriy



2011-08-23 11:59:50

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATCH BlueZ v3] Fix remove temporary link key for No Bonding

Hi Dmitriy,

On Mon, Aug 22, 2011, Dmitriy Paliy wrote:
> This fixes regression caused by 33cdfcb0fabcfb5260953a13ae277b5abe9a322d.
> Temporary link key should be removed after device is disconnected if
> bonding information is not stored in file system.
>
> Currently, the key is deleted only when paired device is removed, or
> adapter is powered off. In case of No Bonding authentication, device is
> not paired after disconnection, which results in link key left in memory.
>
> On the other hand, device is not necessarily removed after disconnection
> that also leaves unneeded temporary link key in memory. Therefore,
> btd_adapter_remove_bonding is moved to device_set_paired(device, FALSE)
> covering both cases.
> ---
> src/device.c | 4 +++-
> 1 files changed, 3 insertions(+), 1 deletions(-)

Applied. Thanks.

Johan

2011-08-22 18:12:48

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH BlueZ v3] Fix remove temporary link key for No Bonding

Hi Dmitriy,

On Mon, Aug 22, 2011 at 5:06 PM, Dmitriy Paliy <[email protected]> wrote:
> Hi Luiz,
>
> On Mon, Aug 22, 2011 at 5:02 PM, Luiz Augusto von Dentz
> <[email protected]> wrote:
>> Hi Dmitriy,
>>
>> On Mon, Aug 22, 2011 at 4:45 PM, Dmitriy Paliy <[email protected]> wrote:
>>> This fixes regression caused by 33cdfcb0fabcfb5260953a13ae277b5abe9a322d.
>>> Temporary link key should be removed after device is disconnected if
>>> bonding information is not stored in file system.
>>>
>>> Currently, the key is deleted only when paired device is removed, or
>>> adapter is powered off. In case of No Bonding authentication, device is
>>> not paired after disconnection, which results in link key left in memory.
>>>
>>> On the other hand, device is not necessarily removed after disconnection
>>> that also leaves unneeded temporary link key in memory. Therefore,
>>> btd_adapter_remove_bonding is moved to device_set_paired(device, FALSE)
>>> covering both cases.
>>> ---
>>> ?src/device.c | ? ?4 +++-
>>> ?1 files changed, 3 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/src/device.c b/src/device.c
>>> index 9dd657c..96e798f 100644
>>> --- a/src/device.c
>>> +++ b/src/device.c
>>> @@ -993,7 +993,6 @@ static void device_remove_stored(struct btd_device *device)
>>> ? ? ? ? ? ? ? ?delete_entry(&src, "aliases", addr);
>>> ? ? ? ? ? ? ? ?device_set_bonded(device, FALSE);
>>> ? ? ? ? ? ? ? ?device_set_paired(device, FALSE);
>>> - ? ? ? ? ? ? ? btd_adapter_remove_bonding(device->adapter, &device->bdaddr);
>>> ? ? ? ?}
>>> ? ? ? ?delete_entry(&src, "profiles", addr);
>>> ? ? ? ?delete_entry(&src, "trusts", addr);
>>> @@ -2038,6 +2037,9 @@ void device_set_paired(struct btd_device *device, gboolean value)
>>> ? ? ? ?if (device->paired == value)
>>> ? ? ? ? ? ? ? ?return;
>>>
>>> + ? ? ? if (!value)
>>> + ? ? ? ? ? ? ? btd_adapter_remove_bonding(device->adapter, &device->bdaddr);
>>> +
>>> ? ? ? ?device->paired = value;
>>>
>>> ? ? ? ?emit_property_changed(conn, device->path, DEVICE_INTERFACE, "Paired",
>>> --
>>> 1.7.4.1
>>
>> There is one more place where we use btd_adapter_remove_bonding see
>> device_remove_stored.
>
> Yes, I removed it from there, since it is in device_set_paired. Could
> you elaborate more?

My bad, didn't see you have changed that.

--
Luiz Augusto von Dentz

2011-08-22 14:06:24

by Dmitriy Paliy

[permalink] [raw]
Subject: Re: [PATCH BlueZ v3] Fix remove temporary link key for No Bonding

Hi Luiz,

On Mon, Aug 22, 2011 at 5:02 PM, Luiz Augusto von Dentz
<[email protected]> wrote:
> Hi Dmitriy,
>
> On Mon, Aug 22, 2011 at 4:45 PM, Dmitriy Paliy <[email protected]> wrote:
>> This fixes regression caused by 33cdfcb0fabcfb5260953a13ae277b5abe9a322d.
>> Temporary link key should be removed after device is disconnected if
>> bonding information is not stored in file system.
>>
>> Currently, the key is deleted only when paired device is removed, or
>> adapter is powered off. In case of No Bonding authentication, device is
>> not paired after disconnection, which results in link key left in memory.
>>
>> On the other hand, device is not necessarily removed after disconnection
>> that also leaves unneeded temporary link key in memory. Therefore,
>> btd_adapter_remove_bonding is moved to device_set_paired(device, FALSE)
>> covering both cases.
>> ---
>> ?src/device.c | ? ?4 +++-
>> ?1 files changed, 3 insertions(+), 1 deletions(-)
>>
>> diff --git a/src/device.c b/src/device.c
>> index 9dd657c..96e798f 100644
>> --- a/src/device.c
>> +++ b/src/device.c
>> @@ -993,7 +993,6 @@ static void device_remove_stored(struct btd_device *device)
>> ? ? ? ? ? ? ? ?delete_entry(&src, "aliases", addr);
>> ? ? ? ? ? ? ? ?device_set_bonded(device, FALSE);
>> ? ? ? ? ? ? ? ?device_set_paired(device, FALSE);
>> - ? ? ? ? ? ? ? btd_adapter_remove_bonding(device->adapter, &device->bdaddr);
>> ? ? ? ?}
>> ? ? ? ?delete_entry(&src, "profiles", addr);
>> ? ? ? ?delete_entry(&src, "trusts", addr);
>> @@ -2038,6 +2037,9 @@ void device_set_paired(struct btd_device *device, gboolean value)
>> ? ? ? ?if (device->paired == value)
>> ? ? ? ? ? ? ? ?return;
>>
>> + ? ? ? if (!value)
>> + ? ? ? ? ? ? ? btd_adapter_remove_bonding(device->adapter, &device->bdaddr);
>> +
>> ? ? ? ?device->paired = value;
>>
>> ? ? ? ?emit_property_changed(conn, device->path, DEVICE_INTERFACE, "Paired",
>> --
>> 1.7.4.1
>
> There is one more place where we use btd_adapter_remove_bonding see
> device_remove_stored.

Yes, I removed it from there, since it is in device_set_paired. Could
you elaborate more?

Dmitriy

2011-08-22 14:02:05

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH BlueZ v3] Fix remove temporary link key for No Bonding

Hi Dmitriy,

On Mon, Aug 22, 2011 at 4:45 PM, Dmitriy Paliy <[email protected]> wrote:
> This fixes regression caused by 33cdfcb0fabcfb5260953a13ae277b5abe9a322d.
> Temporary link key should be removed after device is disconnected if
> bonding information is not stored in file system.
>
> Currently, the key is deleted only when paired device is removed, or
> adapter is powered off. In case of No Bonding authentication, device is
> not paired after disconnection, which results in link key left in memory.
>
> On the other hand, device is not necessarily removed after disconnection
> that also leaves unneeded temporary link key in memory. Therefore,
> btd_adapter_remove_bonding is moved to device_set_paired(device, FALSE)
> covering both cases.
> ---
> ?src/device.c | ? ?4 +++-
> ?1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/src/device.c b/src/device.c
> index 9dd657c..96e798f 100644
> --- a/src/device.c
> +++ b/src/device.c
> @@ -993,7 +993,6 @@ static void device_remove_stored(struct btd_device *device)
> ? ? ? ? ? ? ? ?delete_entry(&src, "aliases", addr);
> ? ? ? ? ? ? ? ?device_set_bonded(device, FALSE);
> ? ? ? ? ? ? ? ?device_set_paired(device, FALSE);
> - ? ? ? ? ? ? ? btd_adapter_remove_bonding(device->adapter, &device->bdaddr);
> ? ? ? ?}
> ? ? ? ?delete_entry(&src, "profiles", addr);
> ? ? ? ?delete_entry(&src, "trusts", addr);
> @@ -2038,6 +2037,9 @@ void device_set_paired(struct btd_device *device, gboolean value)
> ? ? ? ?if (device->paired == value)
> ? ? ? ? ? ? ? ?return;
>
> + ? ? ? if (!value)
> + ? ? ? ? ? ? ? btd_adapter_remove_bonding(device->adapter, &device->bdaddr);
> +
> ? ? ? ?device->paired = value;
>
> ? ? ? ?emit_property_changed(conn, device->path, DEVICE_INTERFACE, "Paired",
> --
> 1.7.4.1

There is one more place where we use btd_adapter_remove_bonding see
device_remove_stored.

--
Luiz Augusto von Dentz

2011-08-22 13:45:39

by Dmitriy Paliy

[permalink] [raw]
Subject: [PATCH BlueZ v3] Fix remove temporary link key for No Bonding

This fixes regression caused by 33cdfcb0fabcfb5260953a13ae277b5abe9a322d.
Temporary link key should be removed after device is disconnected if
bonding information is not stored in file system.

Currently, the key is deleted only when paired device is removed, or
adapter is powered off. In case of No Bonding authentication, device is
not paired after disconnection, which results in link key left in memory.

On the other hand, device is not necessarily removed after disconnection
that also leaves unneeded temporary link key in memory. Therefore,
btd_adapter_remove_bonding is moved to device_set_paired(device, FALSE)
covering both cases.
---
src/device.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/device.c b/src/device.c
index 9dd657c..96e798f 100644
--- a/src/device.c
+++ b/src/device.c
@@ -993,7 +993,6 @@ static void device_remove_stored(struct btd_device *device)
delete_entry(&src, "aliases", addr);
device_set_bonded(device, FALSE);
device_set_paired(device, FALSE);
- btd_adapter_remove_bonding(device->adapter, &device->bdaddr);
}
delete_entry(&src, "profiles", addr);
delete_entry(&src, "trusts", addr);
@@ -2038,6 +2037,9 @@ void device_set_paired(struct btd_device *device, gboolean value)
if (device->paired == value)
return;

+ if (!value)
+ btd_adapter_remove_bonding(device->adapter, &device->bdaddr);
+
device->paired = value;

emit_property_changed(conn, device->path, DEVICE_INTERFACE, "Paired",
--
1.7.4.1