diff options
Diffstat (limited to 'net/nfc/llcp/sock.c')
| -rw-r--r-- | net/nfc/llcp/sock.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/net/nfc/llcp/sock.c b/net/nfc/llcp/sock.c index 5332751943a..8f025746f33 100644 --- a/net/nfc/llcp/sock.c +++ b/net/nfc/llcp/sock.c @@ -270,7 +270,9 @@ struct sock *nfc_llcp_accept_dequeue(struct sock *parent,  		}  		if (sk->sk_state == LLCP_CONNECTED || !newsock) { -			nfc_llcp_accept_unlink(sk); +			list_del_init(&lsk->accept_queue); +			sock_put(sk); +  			if (newsock)  				sock_graft(sk, newsock); @@ -278,6 +280,8 @@ struct sock *nfc_llcp_accept_dequeue(struct sock *parent,  			pr_debug("Returning sk state %d\n", sk->sk_state); +			sk_acceptq_removed(parent); +  			return sk;  		} @@ -462,8 +466,6 @@ static int llcp_sock_release(struct socket *sock)  			nfc_llcp_accept_unlink(accept_sk);  			release_sock(accept_sk); - -			sock_orphan(accept_sk);  		}  	}  |