diff options
author | Johan Hedberg <johan.hedberg@intel.com> | 2014-08-11 22:06:43 +0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2014-08-14 08:49:24 +0200 |
commit | 86d1407cb9cd3cb866eae24a2aedb8006160db69 (patch) | |
tree | 618bfad9cc5409c0833c53eda0a64921c3f08243 /net/bluetooth/smp.h | |
parent | 109ec2309eb996fbe03302fbd40dec9014c6f849 (diff) |
Bluetooth: Always call smp_distribute_keys() from a workqueue
The smp_distribute_keys() function calls smp_notify_keys() which in turn
calls l2cap_conn_update_id_addr(). The l2cap_conn_update_id_addr()
function will iterate through all L2CAP channels for the respective
connection: lock the channel, update the address information and unlock
the channel.
Since SMP is now using l2cap_chan callbacks each callback is called with
the channel lock held. Therefore, calling l2cap_conn_update_id_addr()
would cause a deadlock calling l2cap_chan_lock() on the SMP channel.
This patch moves calling smp_distribute_keys() through a workqueue so
that it is never called from an L2CAP channel callback.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth/smp.h')
0 files changed, 0 insertions, 0 deletions