Commit 49d11741 authored by Johan Hedberg's avatar Johan Hedberg Committed by Marcel Holtmann

Bluetooth: Add debug logs to help track locking issues

This patch adds some extra debug logs to L2CAP related code. These are
mainly to help track locking issues but will probably be useful for
debugging other types of issues as well.
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent d88b5bbf
...@@ -570,7 +570,8 @@ void l2cap_chan_del(struct l2cap_chan *chan, int err) ...@@ -570,7 +570,8 @@ void l2cap_chan_del(struct l2cap_chan *chan, int err)
__clear_chan_timer(chan); __clear_chan_timer(chan);
BT_DBG("chan %p, conn %p, err %d", chan, conn, err); BT_DBG("chan %p, conn %p, err %d, state %s", chan, conn, err,
state_to_string(chan->state));
chan->ops->teardown(chan, err); chan->ops->teardown(chan, err);
......
...@@ -1102,6 +1102,8 @@ static int l2cap_sock_shutdown(struct socket *sock, int how) ...@@ -1102,6 +1102,8 @@ static int l2cap_sock_shutdown(struct socket *sock, int how)
chan = l2cap_pi(sk)->chan; chan = l2cap_pi(sk)->chan;
conn = chan->conn; conn = chan->conn;
BT_DBG("chan %p state %s", chan, state_to_string(chan->state));
if (conn) if (conn)
mutex_lock(&conn->chan_lock); mutex_lock(&conn->chan_lock);
...@@ -1159,12 +1161,16 @@ static void l2cap_sock_cleanup_listen(struct sock *parent) ...@@ -1159,12 +1161,16 @@ static void l2cap_sock_cleanup_listen(struct sock *parent)
{ {
struct sock *sk; struct sock *sk;
BT_DBG("parent %p", parent); BT_DBG("parent %p state %s", parent,
state_to_string(parent->sk_state));
/* Close not yet accepted channels */ /* Close not yet accepted channels */
while ((sk = bt_accept_dequeue(parent, NULL))) { while ((sk = bt_accept_dequeue(parent, NULL))) {
struct l2cap_chan *chan = l2cap_pi(sk)->chan; struct l2cap_chan *chan = l2cap_pi(sk)->chan;
BT_DBG("child chan %p state %s", chan,
state_to_string(chan->state));
l2cap_chan_lock(chan); l2cap_chan_lock(chan);
__clear_chan_timer(chan); __clear_chan_timer(chan);
l2cap_chan_close(chan, ECONNRESET); l2cap_chan_close(chan, ECONNRESET);
...@@ -1252,6 +1258,8 @@ static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err) ...@@ -1252,6 +1258,8 @@ static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
struct sock *sk = chan->data; struct sock *sk = chan->data;
struct sock *parent; struct sock *parent;
BT_DBG("chan %p state %s", chan, state_to_string(chan->state));
/* This callback can be called both for server (BT_LISTEN) /* This callback can be called both for server (BT_LISTEN)
* sockets as well as "normal" ones. To avoid lockdep warnings * sockets as well as "normal" ones. To avoid lockdep warnings
* with child socket locking (through l2cap_sock_cleanup_listen) * with child socket locking (through l2cap_sock_cleanup_listen)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment