Bluetooth: Fix incorrectly overriding conn->src_type
authorJohan Hedberg <johan.hedberg@intel.com>
Thu, 5 Jun 2014 09:19:54 +0000 (12:19 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 13 Jun 2014 11:30:37 +0000 (13:30 +0200)
The src_type member of struct hci_conn should always reflect the address
type of the src_member. It should never be overridden. There is already
code in place in the command status handler of HCI_LE_Create_Connection
to copy the right initiator address into conn->init_addr_type.

Without this patch, if privacy is enabled, we will send the wrong
address type in the SMP identity address information PDU (it'll e.g.
contain our public address but a random address type).

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

index 8671bc79a35bebe23a2f6b269c582bfcfc4add37..b9b2bd464bec45002a4310e67917844e2c685736 100644 (file)
@@ -610,11 +610,6 @@ static void hci_req_add_le_create_conn(struct hci_request *req,
        if (hci_update_random_address(req, false, &own_addr_type))
                return;
 
-       /* Save the address type used for this connnection attempt so we able
-        * to retrieve this information if we need it.
-        */
-       conn->src_type = own_addr_type;
-
        cp.scan_interval = cpu_to_le16(hdev->le_scan_interval);
        cp.scan_window = cpu_to_le16(hdev->le_scan_window);
        bacpy(&cp.peer_addr, &conn->dst);