Return-Path: MIME-Version: 1.0 In-Reply-To: References: <1314006934-4953-1-git-send-email-dmitriy.paliy@nokia.com> <1314006934-4953-2-git-send-email-dmitriy.paliy@nokia.com> Date: Mon, 22 Aug 2011 15:44:28 +0300 Message-ID: Subject: Re: [PATCH BlueZ v2] Fix remove temporary link key for No Bonding From: Dmitriy Paliy To: Luiz Augusto von Dentz Cc: Dmitriy Paliy , linux-bluetooth@vger.kernel.org Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-bluetooth-owner@vger.kernel.org List-ID: Hi Luiz, On Mon, Aug 22, 2011 at 3:04 PM, Luiz Augusto von Dentz wrote: > Hi Dmitriy, > > On Mon, Aug 22, 2011 at 12:55 PM, 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. >> --- >> ?src/device.c | ? ?4 +++- >> ?1 files changed, 3 insertions(+), 1 deletions(-) >> >> diff --git a/src/device.c b/src/device.c >> index 9dd657c..f323bf8 100644 >> --- a/src/device.c >> +++ b/src/device.c >> @@ -855,8 +855,10 @@ void device_remove_connection(struct btd_device *device, DBusConnection *conn) >> ? ? ? ? ? ? ? ?device->disconnects = g_slist_remove(device->disconnects, msg); >> ? ? ? ?} >> >> - ? ? ? if (device_is_paired(device) && !device_is_bonded(device)) >> + ? ? ? if (device_is_paired(device) && !device_is_bonded(device)) { >> + ? ? ? ? ? ? ? btd_adapter_remove_bonding(device->adapter, &device->bdaddr); >> ? ? ? ? ? ? ? ?device_set_paired(device, FALSE); >> + ? ? ? } > > How about move btd_adapter_remove_bonding to device_set_paired e.g. if > (!value) btd_adapter_remove_bonding? Since btd_adapter_remove_bonding is used only together with device_set_paired(device, FALSE), it makes sense code-wise. However, downside is that one may start thinking that device_set_paired(device, TRUE) creates bonding, which is not so. Therefore, it looks a bit questionable. I will submit new proposal. Dmitriy