Bluetooth: Fix clearing remote OOB data through mgmt
authorJohan Hedberg <johan.hedberg@intel.com>
Sat, 15 Nov 2014 07:34:23 +0000 (09:34 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Sat, 15 Nov 2014 08:00:29 +0000 (09:00 +0100)
When passed BDADDR_ANY the Remove Remote OOB Data comand is specified to
clear all entries. This patch adds the necessary check and calls
hci_remote_oob_data_clear() when necessary.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/mgmt.c

index ce0272c6f71fdccefb26c49e7fffbd075ffab12d..b84c0923ec6288a8c9f13e985cdeba1e34512dc8 100644 (file)
@@ -3635,12 +3635,19 @@ static int remove_remote_oob_data(struct sock *sk, struct hci_dev *hdev,
 
        hci_dev_lock(hdev);
 
+       if (!bacmp(&cp->addr.bdaddr, BDADDR_ANY)) {
+               hci_remote_oob_data_clear(hdev);
+               status = MGMT_STATUS_SUCCESS;
+               goto done;
+       }
+
        err = hci_remove_remote_oob_data(hdev, &cp->addr.bdaddr);
        if (err < 0)
                status = MGMT_STATUS_INVALID_PARAMS;
        else
                status = MGMT_STATUS_SUCCESS;
 
+done:
        err = cmd_complete(sk, hdev->id, MGMT_OP_REMOVE_REMOTE_OOB_DATA,
                           status, &cp->addr, sizeof(cp->addr));