Bluetooth: Refactor L2CAP channel allocation
If the allocation happens at l2cap_sock_create() will be able to use the struct l2cap_chan to store channel info that comes from the user via setsockopt. Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
This commit is contained in:
@@ -229,7 +229,7 @@ static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int al
|
||||
l2cap_pi(sk)->psm = la.l2_psm;
|
||||
l2cap_pi(sk)->dcid = la.l2_cid;
|
||||
|
||||
err = l2cap_do_connect(sk);
|
||||
err = l2cap_do_connect(l2cap_pi(sk)->chan);
|
||||
if (err)
|
||||
goto done;
|
||||
|
||||
@@ -1054,6 +1054,7 @@ static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
struct sock *sk;
|
||||
struct l2cap_chan *chan;
|
||||
|
||||
BT_DBG("sock %p", sock);
|
||||
|
||||
@@ -1072,6 +1073,14 @@ static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
|
||||
if (!sk)
|
||||
return -ENOMEM;
|
||||
|
||||
chan = l2cap_chan_alloc(sk);
|
||||
if (!chan) {
|
||||
l2cap_sock_kill(sk);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
l2cap_pi(sk)->chan = chan;
|
||||
|
||||
l2cap_sock_init(sk, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user