Bluetooth: Fix hidp_get_connection()
authorGustavo F. Padovan <padovan@profusion.mobi>
Thu, 20 Oct 2011 19:21:34 +0000 (17:21 -0200)
committerGustavo F. Padovan <padovan@profusion.mobi>
Mon, 7 Nov 2011 19:24:55 +0000 (17:24 -0200)
This functions needs crtl_sock and intr_sock to be set first.

Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
net/bluetooth/hidp/core.c

index 56dc660d234a51d03980841a390549c7a5d71f43..3c2d888925d7a8436b19ef8d1562fe9a7943a780 100644 (file)
@@ -996,12 +996,6 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
                return -ENOMEM;
        }
 
-       session->conn = hidp_get_connection(session);
-       if (!session->conn) {
-               err = -ENOTCONN;
-               goto failed;
-       }
-
        bacpy(&session->bdaddr, &bt_sk(ctrl_sock->sk)->dst);
 
        session->ctrl_mtu = min_t(uint, l2cap_pi(ctrl_sock->sk)->chan->omtu,
@@ -1015,6 +1009,12 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
        session->intr_sock = intr_sock;
        session->state     = BT_CONNECTED;
 
+       session->conn = hidp_get_connection(session);
+       if (!session->conn) {
+               err = -ENOTCONN;
+               goto failed;
+       }
+
        setup_timer(&session->timer, hidp_idle_timeout, (unsigned long)session);
 
        skb_queue_head_init(&session->ctrl_transmit);