Bluetooth: Allow L2CAP getpeername() for BT_CONFIG state
authorJohan Hedberg <johan.hedberg@intel.com>
Tue, 1 Jul 2014 09:07:23 +0000 (12:07 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 3 Jul 2014 15:42:52 +0000 (17:42 +0200)
We have all the necessary remote information for getpeername() when we
are in the BT_CONFIG state so this should be allowed. This is
particularly important for LE sockets where changing the security level
will temporarily move the socket into BT_CONFIG state.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/l2cap_sock.c

index bf72886de6efca8c4a115228ca71c0751e2edeb5..9bb4d1b3a48382301ba9af14c392b7754f4198e8 100644 (file)
@@ -361,7 +361,8 @@ static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr,
        BT_DBG("sock %p, sk %p", sock, sk);
 
        if (peer && sk->sk_state != BT_CONNECTED &&
-           sk->sk_state != BT_CONNECT && sk->sk_state != BT_CONNECT2)
+           sk->sk_state != BT_CONNECT && sk->sk_state != BT_CONNECT2 &&
+           sk->sk_state != BT_CONFIG)
                return -ENOTCONN;
 
        memset(la, 0, sizeof(struct sockaddr_l2));