Skip to content

Commit

Permalink
Bluetooth: Merge l2cap_chan_create() in the l2cap_sock_alloc()
Browse files Browse the repository at this point in the history
As a first step to remove l2cap_sock_alloc() and l2cap_sock_init() from
l2cap_core.c

Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
  • Loading branch information
Gustavo F. Padovan committed Jun 13, 2011
1 parent 448f262 commit dc50a06
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 24 deletions.
18 changes: 3 additions & 15 deletions net/bluetooth/l2cap_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -846,13 +846,7 @@ static void l2cap_le_conn_ready(struct l2cap_conn *conn)
if (!sk)
goto clean;

chan = l2cap_chan_create(sk);
if (!chan) {
l2cap_sock_kill(sk);
goto clean;
}

l2cap_pi(sk)->chan = chan;
chan = l2cap_pi(sk)->chan;

write_lock_bh(&conn->chan_lock);

Expand Down Expand Up @@ -2339,14 +2333,6 @@ static inline int l2cap_connect_req(struct l2cap_conn *conn, struct l2cap_cmd_hd
if (!sk)
goto response;

chan = l2cap_chan_create(sk);
if (!chan) {
l2cap_sock_kill(sk);
goto response;
}

l2cap_pi(sk)->chan = chan;

write_lock_bh(&conn->chan_lock);

/* Check if we already have channel with that dcid */
Expand All @@ -2359,6 +2345,8 @@ static inline int l2cap_connect_req(struct l2cap_conn *conn, struct l2cap_cmd_hd

hci_conn_hold(conn->hcon);

chan = l2cap_pi(sk)->chan;

l2cap_sock_init(sk, parent);
bacpy(&bt_sk(sk)->src, conn->src);
bacpy(&bt_sk(sk)->dst, conn->dst);
Expand Down
18 changes: 9 additions & 9 deletions net/bluetooth/l2cap_sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -853,6 +853,7 @@ static struct proto l2cap_proto = {
struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio)
{
struct sock *sk;
struct l2cap_chan *chan;

sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto);
if (!sk)
Expand All @@ -869,14 +870,21 @@ struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, g
sk->sk_protocol = proto;
sk->sk_state = BT_OPEN;

chan = l2cap_chan_create(sk);
if (!chan) {
l2cap_sock_kill(sk);
return NULL;
}

l2cap_pi(sk)->chan = chan;

return sk;
}

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);

Expand All @@ -895,14 +903,6 @@ static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
if (!sk)
return -ENOMEM;

chan = l2cap_chan_create(sk);
if (!chan) {
l2cap_sock_kill(sk);
return -ENOMEM;
}

l2cap_pi(sk)->chan = chan;

l2cap_sock_init(sk, NULL);
return 0;
}
Expand Down

0 comments on commit dc50a06

Please sign in to comment.