Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc50a06d authored by Gustavo Padovan's avatar Gustavo Padovan
Browse files

Bluetooth: Merge l2cap_chan_create() in the l2cap_sock_alloc()



As a first step to remove l2cap_sock_alloc() and l2cap_sock_init() from
l2cap_core.c

Signed-off-by: default avatarGustavo F. Padovan <padovan@profusion.mobi>
parent 448f2627
Loading
Loading
Loading
Loading
+3 −15
Original line number Diff line number Diff line
@@ -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);

@@ -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 */
@@ -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);
+9 −9
Original line number Diff line number Diff line
@@ -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)
@@ -869,6 +870,14 @@ 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;
}

@@ -876,7 +885,6 @@ 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);

@@ -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;
}