diff options
| -rw-r--r-- | net/bluetooth/l2cap_core.c | 3 | ||||
| -rw-r--r-- | net/bluetooth/l2cap_sock.c | 10 |
2 files changed, 11 insertions, 2 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 15784d32108d..8e1273173020 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c | |||
| @@ -570,7 +570,8 @@ void l2cap_chan_del(struct l2cap_chan *chan, int err) | |||
| 570 | 570 | ||
| 571 | __clear_chan_timer(chan); | 571 | __clear_chan_timer(chan); |
| 572 | 572 | ||
| 573 | BT_DBG("chan %p, conn %p, err %d", chan, conn, err); | 573 | BT_DBG("chan %p, conn %p, err %d, state %s", chan, conn, err, |
| 574 | state_to_string(chan->state)); | ||
| 574 | 575 | ||
| 575 | chan->ops->teardown(chan, err); | 576 | chan->ops->teardown(chan, err); |
| 576 | 577 | ||
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index a5aa9f92b5e2..b0efb7202957 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c | |||
| @@ -1102,6 +1102,8 @@ static int l2cap_sock_shutdown(struct socket *sock, int how) | |||
| 1102 | chan = l2cap_pi(sk)->chan; | 1102 | chan = l2cap_pi(sk)->chan; |
| 1103 | conn = chan->conn; | 1103 | conn = chan->conn; |
| 1104 | 1104 | ||
| 1105 | BT_DBG("chan %p state %s", chan, state_to_string(chan->state)); | ||
| 1106 | |||
| 1105 | if (conn) | 1107 | if (conn) |
| 1106 | mutex_lock(&conn->chan_lock); | 1108 | mutex_lock(&conn->chan_lock); |
| 1107 | 1109 | ||
| @@ -1159,12 +1161,16 @@ static void l2cap_sock_cleanup_listen(struct sock *parent) | |||
| 1159 | { | 1161 | { |
| 1160 | struct sock *sk; | 1162 | struct sock *sk; |
| 1161 | 1163 | ||
| 1162 | BT_DBG("parent %p", parent); | 1164 | BT_DBG("parent %p state %s", parent, |
| 1165 | state_to_string(parent->sk_state)); | ||
| 1163 | 1166 | ||
| 1164 | /* Close not yet accepted channels */ | 1167 | /* Close not yet accepted channels */ |
| 1165 | while ((sk = bt_accept_dequeue(parent, NULL))) { | 1168 | while ((sk = bt_accept_dequeue(parent, NULL))) { |
| 1166 | struct l2cap_chan *chan = l2cap_pi(sk)->chan; | 1169 | struct l2cap_chan *chan = l2cap_pi(sk)->chan; |
| 1167 | 1170 | ||
| 1171 | BT_DBG("child chan %p state %s", chan, | ||
| 1172 | state_to_string(chan->state)); | ||
| 1173 | |||
| 1168 | l2cap_chan_lock(chan); | 1174 | l2cap_chan_lock(chan); |
| 1169 | __clear_chan_timer(chan); | 1175 | __clear_chan_timer(chan); |
| 1170 | l2cap_chan_close(chan, ECONNRESET); | 1176 | l2cap_chan_close(chan, ECONNRESET); |
| @@ -1252,6 +1258,8 @@ static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err) | |||
| 1252 | struct sock *sk = chan->data; | 1258 | struct sock *sk = chan->data; |
| 1253 | struct sock *parent; | 1259 | struct sock *parent; |
| 1254 | 1260 | ||
| 1261 | BT_DBG("chan %p state %s", chan, state_to_string(chan->state)); | ||
| 1262 | |||
| 1255 | /* This callback can be called both for server (BT_LISTEN) | 1263 | /* This callback can be called both for server (BT_LISTEN) |
| 1256 | * sockets as well as "normal" ones. To avoid lockdep warnings | 1264 | * sockets as well as "normal" ones. To avoid lockdep warnings |
| 1257 | * with child socket locking (through l2cap_sock_cleanup_listen) | 1265 | * with child socket locking (through l2cap_sock_cleanup_listen) |
