|
@@ -795,7 +795,7 @@ static void l2cap_sock_kill(struct sock *sk)
|
|
|
static int l2cap_sock_shutdown(struct socket *sock, int how)
|
|
|
{
|
|
|
struct sock *sk = sock->sk;
|
|
|
- struct l2cap_chan *chan = l2cap_pi(sk)->chan;
|
|
|
+ struct l2cap_chan *chan;
|
|
|
int err = 0;
|
|
|
|
|
|
BT_DBG("sock %p, sk %p", sock, sk);
|
|
@@ -803,6 +803,8 @@ static int l2cap_sock_shutdown(struct socket *sock, int how)
|
|
|
if (!sk)
|
|
|
return 0;
|
|
|
|
|
|
+ chan = l2cap_pi(sk)->chan;
|
|
|
+
|
|
|
lock_sock(sk);
|
|
|
if (!sk->sk_shutdown) {
|
|
|
if (chan->mode == L2CAP_MODE_ERTM)
|