diff options
| author | Johan Hedberg <johan.hedberg@intel.com> | 2014-02-18 17:14:34 +0200 |
|---|---|---|
| committer | Marcel Holtmann <marcel@holtmann.org> | 2014-02-18 08:58:20 -0800 |
| commit | b7d448d74a09af412d778918415fe2ea4d5c2de4 (patch) | |
| tree | 197e61f024c1cf644107b6f1a830a4fd5381b273 | |
| parent | c51ffa0b2fb23ec19b2d01597506d8c953ed1218 (diff) | |
Bluetooth: Fix completing SMP as peripheral when no keys are expected
When we're the acceptors (peripheral/slave) of an SMP procedure and
we've completed distributing our keys we should only stick around
waiting for keys from the remote side if any of the initiator
distribution bits were actually set. This patch fixes the
smp_distribute_keys function to clear the SMP context when this
situation occurs.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
| -rw-r--r-- | net/bluetooth/smp.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index 5867c1c3f43..0c0dd1b52b6 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c @@ -1175,7 +1175,7 @@ int smp_distribute_keys(struct l2cap_conn *conn, __u8 force) *keydist &= ~SMP_DIST_SIGN; } - if (conn->hcon->out || force) { + if (conn->hcon->out || force || !(rsp->init_key_dist & 0x07)) { clear_bit(HCI_CONN_LE_SMP_PEND, &conn->hcon->flags); cancel_delayed_work_sync(&conn->security_timer); smp_chan_destroy(conn); |
