Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetoot...
[cascardo/linux.git] / net / bluetooth / l2cap_sock.c
index f59e00c..ade3fb4 100644 (file)
@@ -1180,13 +1180,16 @@ static struct l2cap_chan *l2cap_sock_new_connection_cb(struct l2cap_chan *chan)
        /* Check for backlog size */
        if (sk_acceptq_is_full(parent)) {
                BT_DBG("backlog full %d", parent->sk_ack_backlog);
+               release_sock(parent);
                return NULL;
        }
 
        sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
                              GFP_ATOMIC);
-       if (!sk)
+       if (!sk) {
+               release_sock(parent);
                return NULL;
+        }
 
        bt_sock_reclassify_lock(sk, BTPROTO_L2CAP);
 
@@ -1271,7 +1274,7 @@ static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
 
                if (parent) {
                        bt_accept_unlink(sk);
-                       parent->sk_data_ready(parent, 0);
+                       parent->sk_data_ready(parent);
                } else {
                        sk->sk_state_change(sk);
                }
@@ -1327,7 +1330,7 @@ static void l2cap_sock_ready_cb(struct l2cap_chan *chan)
        sk->sk_state_change(sk);
 
        if (parent)
-               parent->sk_data_ready(parent, 0);
+               parent->sk_data_ready(parent);
 
        release_sock(sk);
 }
@@ -1340,7 +1343,7 @@ static void l2cap_sock_defer_cb(struct l2cap_chan *chan)
 
        parent = bt_sk(sk)->parent;
        if (parent)
-               parent->sk_data_ready(parent, 0);
+               parent->sk_data_ready(parent);
 
        release_sock(sk);
 }