Return-Path: Date: Mon, 30 Jan 2012 20:33:16 -0300 From: Vinicius Costa Gomes To: Marcel Holtmann Cc: linux-bluetooth@vger.kernel.org Subject: Re: [PATCH 6/8] Bluetooth: Add support for removing LTK's when pairing is removed Message-ID: <20120130233316.GD17656@samus> References: <1327962558-25720-1-git-send-email-vinicius.gomes@openbossa.org> <1327962558-25720-7-git-send-email-vinicius.gomes@openbossa.org> <1327963746.1955.198.camel@aeonflux> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii In-Reply-To: <1327963746.1955.198.camel@aeonflux> List-ID: Hi Marcel, On 14:49 Mon 30 Jan, Marcel Holtmann wrote: > Hi Vinicius, > > > Instead of having a separated command for removing SMP keys, we use the > > Remove Keys command to remove *all* keys. > > > > Signed-off-by: Vinicius Costa Gomes > > --- > > include/net/bluetooth/hci_core.h | 1 + > > net/bluetooth/mgmt.c | 6 ++++++ > > 2 files changed, 7 insertions(+), 0 deletions(-) > > > > diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h > > index 9e415dc..b61de08 100644 > > --- a/include/net/bluetooth/hci_core.h > > +++ b/include/net/bluetooth/hci_core.h > > @@ -665,6 +665,7 @@ int hci_add_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 addr_type, u8 type, > > int hci_remove_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr); > > struct smp_ltk *hci_find_ltk_addr(struct hci_dev *hdev, bdaddr_t *bdaddr, > > u8 addr_type); > > +int hci_remove_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr); > > why do we have this export now? So why was this previously public? A previous patch ("[PATCH 3/8] Bluetooth: Add new structures for handling SMP Long Term Keys") adds this function but doesn't export it then. Going to fix it. Just to be clear, it is public because it is going to use it on mgmt.c. > > > int hci_smp_ltks_clear(struct hci_dev *hdev); > > > > int hci_remote_oob_data_clear(struct hci_dev *hdev); > > diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c > > index 57aa716..57bee59 100644 > > --- a/net/bluetooth/mgmt.c > > +++ b/net/bluetooth/mgmt.c > > @@ -1113,6 +1113,12 @@ static int remove_keys(struct sock *sk, u16 index, unsigned char *data, > > bacpy(&rp.bdaddr, &cp->bdaddr); > > rp.status = MGMT_STATUS_FAILED; > > > > + err = hci_remove_ltk(hdev, &cp->bdaddr); > > + if (err < 0) { > > + err = cmd_status(sk, index, MGMT_OP_REMOVE_KEYS, -err); > > + goto unlock; > > + } > > + > > err = hci_remove_link_key(hdev, &cp->bdaddr); > > if (err < 0) { > > rp.status = MGMT_STATUS_NOT_PAIRED; > > Acked-by: Marcel Holtmann > > Regards > > Marcel > > Cheers, -- Vinicius