diff --git a/drivers/isdn/mISDN/socket.c b/drivers/isdn/mISDN/socket.c
index 916569ca156d4daf1b699fef711599f7b30b1b77..508945d1b9c1a4b3ac18a31471179f13097a8cc3 100644
--- a/drivers/isdn/mISDN/socket.c
+++ b/drivers/isdn/mISDN/socket.c
@@ -483,22 +483,24 @@ data_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
 		goto done;
 	}
 
-	read_lock_bh(&data_sockets.lock);
-	sk_for_each(csk, node, &data_sockets.head) {
-		if (sk == csk)
-			continue;
-		if (_pms(csk)->dev != _pms(sk)->dev)
-			continue;
-		if (csk->sk_protocol >= ISDN_P_B_START)
-			continue;
-		if (IS_ISDN_P_TE(csk->sk_protocol)
-				== IS_ISDN_P_TE(sk->sk_protocol))
-			continue;
+	if (sk->sk_protocol < ISDN_P_B_START) {
+		read_lock_bh(&data_sockets.lock);
+		sk_for_each(csk, node, &data_sockets.head) {
+			if (sk == csk)
+				continue;
+			if (_pms(csk)->dev != _pms(sk)->dev)
+				continue;
+			if (csk->sk_protocol >= ISDN_P_B_START)
+				continue;
+			if (IS_ISDN_P_TE(csk->sk_protocol)
+					== IS_ISDN_P_TE(sk->sk_protocol))
+				continue;
+			read_unlock_bh(&data_sockets.lock);
+			err = -EBUSY;
+			goto done;
+		}
 		read_unlock_bh(&data_sockets.lock);
-		err = -EBUSY;
-		goto done;
 	}
-	read_unlock_bh(&data_sockets.lock);
 
 	_pms(sk)->ch.send = mISDN_send;
 	_pms(sk)->ch.ctrl = mISDN_ctrl;
diff --git a/drivers/isdn/mISDN/stack.c b/drivers/isdn/mISDN/stack.c
index 63afa8cf9e07f1e3b408d3665d9e814c47bc7c13..e2f45019ebf0be504bdcd68538cd47f51109c588 100644
--- a/drivers/isdn/mISDN/stack.c
+++ b/drivers/isdn/mISDN/stack.c
@@ -446,7 +446,8 @@ connect_layer1(struct mISDNdevice *dev, struct mISDNchannel *ch,
 		rq.protocol = protocol;
 		rq.adr.channel = adr->channel;
 		err = dev->D.ctrl(&dev->D, OPEN_CHANNEL, &rq);
-		printk(KERN_DEBUG "%s: ret 1 %d\n", __func__, err);
+		printk(KERN_DEBUG "%s: ret %d (dev %d)\n", __func__, err,
+			dev->id);
 		if (err)
 			return err;
 		write_lock_bh(&dev->D.st->l1sock.lock);