diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index d5db5a38df6a32d64ded17b330dca0354e4dbc86..bc84ed1b3320e9ed622b43f22d6f7d078032648c 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -632,6 +632,8 @@ static void l2cap_le_conn_ready(struct l2cap_conn *conn)
 	if (!parent)
 		return;
 
+	bh_lock_sock(parent);
+
 	/* Check for backlog size */
 	if (sk_acceptq_is_full(parent)) {
 		BT_DBG("backlog full %d", parent->sk_ack_backlog);