Bluetooth: Hold socket in defer callback in L2CAP socket
authorGustavo Padovan <gustavo.padovan@collabora.co.uk>
Mon, 21 Oct 2013 16:21:39 +0000 (14:21 -0200)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 21 Oct 2013 19:58:17 +0000 (12:58 -0700)
commitacdcabf532908fbefbea294fcad2e3989d1dc036
tree96498c6e4b766277d643621891cacdf3ecb6d346
parent0f2c6153746f270cf28559aa81a4da27847bd395
Bluetooth: Hold socket in defer callback in L2CAP socket

In both places that we use the defer callback the socket lock is held for
a indirect sk access inside __l2cap_change_state() and chan->ops->defer(),
all the rest of the code between lock_sock() and release_sock() is
already protected by the channel lock and won't be affected by this
change.

We now use l2cap_change_state(), the locked version of the change state
function, and the defer callback does the locking itself now. This does
not affect other uses of the defer callback.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/l2cap_core.c
net/bluetooth/l2cap_sock.c