mISDN: Correct busy device detection
Correct busy device detection. This fix belongs to last commit. Signed-off-by: Andreas Eversberg <andreas@eversberg.eu> Signed-off-by: Karsten Keil <kkeil@suse.de>
This commit is contained in:
parent
1b4d33121f
commit
9a812553bd
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue