{
        struct sock *sk = sock->sk;
        int err;
+       struct l2cap_chan *chan;
 
        BT_DBG("sock %p, sk %p", sock, sk);
 
        bt_sock_unlink(&l2cap_sk_list, sk);
 
        err = l2cap_sock_shutdown(sock, 2);
+       chan = l2cap_pi(sk)->chan;
 
-       l2cap_chan_hold(l2cap_pi(sk)->chan);
-       l2cap_chan_lock(l2cap_pi(sk)->chan);
+       l2cap_chan_hold(chan);
+       l2cap_chan_lock(chan);
 
        sock_orphan(sk);
        l2cap_sock_kill(sk);
 
-       l2cap_chan_unlock(l2cap_pi(sk)->chan);
-       l2cap_chan_put(l2cap_pi(sk)->chan);
+       l2cap_chan_unlock(chan);
+       l2cap_chan_put(chan);
 
        return err;
 }