2 BlueZ - Bluetooth protocol stack for Linux
3 Copyright (C) 2000-2001 Qualcomm Incorporated
4 Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org>
5 Copyright (C) 2010 Google Inc.
6 Copyright (C) 2011 ProFUSION Embedded Systems
8 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License version 2 as
12 published by the Free Software Foundation;
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
17 IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
18 CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
21 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23 ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
24 COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
25 SOFTWARE IS DISCLAIMED.
28 /* Bluetooth L2CAP sockets. */
30 #include <linux/export.h>
32 #include <net/bluetooth/bluetooth.h>
33 #include <net/bluetooth/hci_core.h>
34 #include <net/bluetooth/l2cap.h>
35 #include <net/bluetooth/smp.h>
37 static struct bt_sock_list l2cap_sk_list = {
38 .lock = __RW_LOCK_UNLOCKED(l2cap_sk_list.lock)
41 static const struct proto_ops l2cap_sock_ops;
42 static void l2cap_sock_init(struct sock *sk, struct sock *parent);
43 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
44 int proto, gfp_t prio);
46 bool l2cap_is_socket(struct socket *sock)
48 return sock && sock->ops == &l2cap_sock_ops;
50 EXPORT_SYMBOL(l2cap_is_socket);
52 static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
54 struct sock *sk = sock->sk;
55 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
56 struct sockaddr_l2 la;
61 if (!addr || addr->sa_family != AF_BLUETOOTH)
64 memset(&la, 0, sizeof(la));
65 len = min_t(unsigned int, sizeof(la), alen);
66 memcpy(&la, addr, len);
68 if (la.l2_cid && la.l2_psm)
73 if (sk->sk_state != BT_OPEN) {
79 __u16 psm = __le16_to_cpu(la.l2_psm);
81 /* PSM must be odd and lsb of upper byte must be 0 */
82 if ((psm & 0x0101) != 0x0001) {
87 /* Restrict usage of well-known PSMs */
88 if (psm < 0x1001 && !capable(CAP_NET_BIND_SERVICE)) {
95 err = l2cap_add_scid(chan, __le16_to_cpu(la.l2_cid));
97 err = l2cap_add_psm(chan, &la.l2_bdaddr, la.l2_psm);
102 if (__le16_to_cpu(la.l2_psm) == L2CAP_PSM_SDP ||
103 __le16_to_cpu(la.l2_psm) == L2CAP_PSM_RFCOMM)
104 chan->sec_level = BT_SECURITY_SDP;
106 bacpy(&bt_sk(sk)->src, &la.l2_bdaddr);
108 chan->state = BT_BOUND;
109 sk->sk_state = BT_BOUND;
116 static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr,
119 struct sock *sk = sock->sk;
120 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
121 struct sockaddr_l2 la;
126 if (!addr || alen < sizeof(addr->sa_family) ||
127 addr->sa_family != AF_BLUETOOTH)
130 memset(&la, 0, sizeof(la));
131 len = min_t(unsigned int, sizeof(la), alen);
132 memcpy(&la, addr, len);
134 if (la.l2_cid && la.l2_psm)
137 err = l2cap_chan_connect(chan, la.l2_psm, __le16_to_cpu(la.l2_cid),
138 &la.l2_bdaddr, la.l2_bdaddr_type);
144 err = bt_sock_wait_state(sk, BT_CONNECTED,
145 sock_sndtimeo(sk, flags & O_NONBLOCK));
152 static int l2cap_sock_listen(struct socket *sock, int backlog)
154 struct sock *sk = sock->sk;
155 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
158 BT_DBG("sk %p backlog %d", sk, backlog);
162 if (sk->sk_state != BT_BOUND) {
167 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM) {
172 switch (chan->mode) {
173 case L2CAP_MODE_BASIC:
175 case L2CAP_MODE_ERTM:
176 case L2CAP_MODE_STREAMING:
185 sk->sk_max_ack_backlog = backlog;
186 sk->sk_ack_backlog = 0;
188 chan->state = BT_LISTEN;
189 sk->sk_state = BT_LISTEN;
196 static int l2cap_sock_accept(struct socket *sock, struct socket *newsock,
199 DECLARE_WAITQUEUE(wait, current);
200 struct sock *sk = sock->sk, *nsk;
204 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
206 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
208 BT_DBG("sk %p timeo %ld", sk, timeo);
210 /* Wait for an incoming connection. (wake-one). */
211 add_wait_queue_exclusive(sk_sleep(sk), &wait);
213 set_current_state(TASK_INTERRUPTIBLE);
215 if (sk->sk_state != BT_LISTEN) {
220 nsk = bt_accept_dequeue(sk, newsock);
229 if (signal_pending(current)) {
230 err = sock_intr_errno(timeo);
235 timeo = schedule_timeout(timeo);
236 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
238 __set_current_state(TASK_RUNNING);
239 remove_wait_queue(sk_sleep(sk), &wait);
244 newsock->state = SS_CONNECTED;
246 BT_DBG("new socket %p", nsk);
253 static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr,
256 struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
257 struct sock *sk = sock->sk;
258 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
260 BT_DBG("sock %p, sk %p", sock, sk);
262 memset(la, 0, sizeof(struct sockaddr_l2));
263 addr->sa_family = AF_BLUETOOTH;
264 *len = sizeof(struct sockaddr_l2);
267 la->l2_psm = chan->psm;
268 bacpy(&la->l2_bdaddr, &bt_sk(sk)->dst);
269 la->l2_cid = cpu_to_le16(chan->dcid);
271 la->l2_psm = chan->sport;
272 bacpy(&la->l2_bdaddr, &bt_sk(sk)->src);
273 la->l2_cid = cpu_to_le16(chan->scid);
279 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname,
280 char __user *optval, int __user *optlen)
282 struct sock *sk = sock->sk;
283 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
284 struct l2cap_options opts;
285 struct l2cap_conninfo cinfo;
291 if (get_user(len, optlen))
298 memset(&opts, 0, sizeof(opts));
299 opts.imtu = chan->imtu;
300 opts.omtu = chan->omtu;
301 opts.flush_to = chan->flush_to;
302 opts.mode = chan->mode;
303 opts.fcs = chan->fcs;
304 opts.max_tx = chan->max_tx;
305 opts.txwin_size = chan->tx_win;
307 len = min_t(unsigned int, len, sizeof(opts));
308 if (copy_to_user(optval, (char *) &opts, len))
314 switch (chan->sec_level) {
315 case BT_SECURITY_LOW:
318 case BT_SECURITY_MEDIUM:
319 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
321 case BT_SECURITY_HIGH:
322 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
330 if (test_bit(FLAG_ROLE_SWITCH, &chan->flags))
331 opt |= L2CAP_LM_MASTER;
333 if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags))
334 opt |= L2CAP_LM_RELIABLE;
336 if (put_user(opt, (u32 __user *) optval))
341 if (sk->sk_state != BT_CONNECTED &&
342 !(sk->sk_state == BT_CONNECT2 &&
343 test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))) {
348 memset(&cinfo, 0, sizeof(cinfo));
349 cinfo.hci_handle = chan->conn->hcon->handle;
350 memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3);
352 len = min_t(unsigned int, len, sizeof(cinfo));
353 if (copy_to_user(optval, (char *) &cinfo, len))
367 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname,
368 char __user *optval, int __user *optlen)
370 struct sock *sk = sock->sk;
371 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
372 struct bt_security sec;
378 if (level == SOL_L2CAP)
379 return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
381 if (level != SOL_BLUETOOTH)
384 if (get_user(len, optlen))
391 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
392 chan->chan_type != L2CAP_CHAN_RAW) {
397 memset(&sec, 0, sizeof(sec));
399 sec.level = chan->conn->hcon->sec_level;
401 if (sk->sk_state == BT_CONNECTED)
402 sec.key_size = chan->conn->hcon->enc_key_size;
404 sec.level = chan->sec_level;
407 len = min_t(unsigned int, len, sizeof(sec));
408 if (copy_to_user(optval, (char *) &sec, len))
414 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
419 if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags),
420 (u32 __user *) optval))
426 if (put_user(test_bit(FLAG_FLUSHABLE, &chan->flags),
427 (u32 __user *) optval))
433 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM
434 && sk->sk_type != SOCK_RAW) {
439 pwr.force_active = test_bit(FLAG_FORCE_ACTIVE, &chan->flags);
441 len = min_t(unsigned int, len, sizeof(pwr));
442 if (copy_to_user(optval, (char *) &pwr, len))
447 case BT_CHANNEL_POLICY:
448 if (put_user(chan->chan_policy, (u32 __user *) optval))
461 static bool l2cap_valid_mtu(struct l2cap_chan *chan, u16 mtu)
463 switch (chan->scid) {
465 if (mtu < L2CAP_LE_MIN_MTU)
470 if (mtu < L2CAP_DEFAULT_MIN_MTU)
477 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
478 char __user *optval, unsigned int optlen)
480 struct sock *sk = sock->sk;
481 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
482 struct l2cap_options opts;
492 if (sk->sk_state == BT_CONNECTED) {
497 opts.imtu = chan->imtu;
498 opts.omtu = chan->omtu;
499 opts.flush_to = chan->flush_to;
500 opts.mode = chan->mode;
501 opts.fcs = chan->fcs;
502 opts.max_tx = chan->max_tx;
503 opts.txwin_size = chan->tx_win;
505 len = min_t(unsigned int, sizeof(opts), optlen);
506 if (copy_from_user((char *) &opts, optval, len)) {
511 if (opts.txwin_size > L2CAP_DEFAULT_EXT_WINDOW) {
516 if (!l2cap_valid_mtu(chan, opts.imtu)) {
521 chan->mode = opts.mode;
522 switch (chan->mode) {
523 case L2CAP_MODE_BASIC:
524 clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
526 case L2CAP_MODE_ERTM:
527 case L2CAP_MODE_STREAMING:
536 chan->imtu = opts.imtu;
537 chan->omtu = opts.omtu;
538 chan->fcs = opts.fcs;
539 chan->max_tx = opts.max_tx;
540 chan->tx_win = opts.txwin_size;
541 chan->flush_to = opts.flush_to;
545 if (get_user(opt, (u32 __user *) optval)) {
550 if (opt & L2CAP_LM_AUTH)
551 chan->sec_level = BT_SECURITY_LOW;
552 if (opt & L2CAP_LM_ENCRYPT)
553 chan->sec_level = BT_SECURITY_MEDIUM;
554 if (opt & L2CAP_LM_SECURE)
555 chan->sec_level = BT_SECURITY_HIGH;
557 if (opt & L2CAP_LM_MASTER)
558 set_bit(FLAG_ROLE_SWITCH, &chan->flags);
560 clear_bit(FLAG_ROLE_SWITCH, &chan->flags);
562 if (opt & L2CAP_LM_RELIABLE)
563 set_bit(FLAG_FORCE_RELIABLE, &chan->flags);
565 clear_bit(FLAG_FORCE_RELIABLE, &chan->flags);
577 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
578 char __user *optval, unsigned int optlen)
580 struct sock *sk = sock->sk;
581 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
582 struct bt_security sec;
584 struct l2cap_conn *conn;
590 if (level == SOL_L2CAP)
591 return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
593 if (level != SOL_BLUETOOTH)
600 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
601 chan->chan_type != L2CAP_CHAN_RAW) {
606 sec.level = BT_SECURITY_LOW;
608 len = min_t(unsigned int, sizeof(sec), optlen);
609 if (copy_from_user((char *) &sec, optval, len)) {
614 if (sec.level < BT_SECURITY_LOW ||
615 sec.level > BT_SECURITY_HIGH) {
620 chan->sec_level = sec.level;
627 /*change security for LE channels */
628 if (chan->scid == L2CAP_CID_ATT) {
629 if (!conn->hcon->out) {
634 if (smp_conn_security(conn->hcon, sec.level))
636 sk->sk_state = BT_CONFIG;
637 chan->state = BT_CONFIG;
639 /* or for ACL link */
640 } else if ((sk->sk_state == BT_CONNECT2 &&
641 test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) ||
642 sk->sk_state == BT_CONNECTED) {
643 if (!l2cap_chan_check_security(chan))
644 set_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
646 sk->sk_state_change(sk);
653 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
658 if (get_user(opt, (u32 __user *) optval)) {
664 set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
666 clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
670 if (get_user(opt, (u32 __user *) optval)) {
675 if (opt > BT_FLUSHABLE_ON) {
680 if (opt == BT_FLUSHABLE_OFF) {
681 struct l2cap_conn *conn = chan->conn;
682 /* proceed further only when we have l2cap_conn and
683 No Flush support in the LM */
684 if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
691 set_bit(FLAG_FLUSHABLE, &chan->flags);
693 clear_bit(FLAG_FLUSHABLE, &chan->flags);
697 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
698 chan->chan_type != L2CAP_CHAN_RAW) {
703 pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
705 len = min_t(unsigned int, sizeof(pwr), optlen);
706 if (copy_from_user((char *) &pwr, optval, len)) {
711 if (pwr.force_active)
712 set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
714 clear_bit(FLAG_FORCE_ACTIVE, &chan->flags);
717 case BT_CHANNEL_POLICY:
718 if (get_user(opt, (u32 __user *) optval)) {
723 if (opt > BT_CHANNEL_POLICY_AMP_PREFERRED) {
728 if (chan->mode != L2CAP_MODE_ERTM &&
729 chan->mode != L2CAP_MODE_STREAMING) {
734 chan->chan_policy = (u8) opt;
736 if (sk->sk_state == BT_CONNECTED &&
737 chan->move_role == L2CAP_MOVE_ROLE_NONE)
738 l2cap_move_start(chan);
751 static int l2cap_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
752 struct msghdr *msg, size_t len)
754 struct sock *sk = sock->sk;
755 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
758 BT_DBG("sock %p, sk %p", sock, sk);
760 err = sock_error(sk);
764 if (msg->msg_flags & MSG_OOB)
767 if (sk->sk_state != BT_CONNECTED)
771 err = bt_sock_wait_ready(sk, msg->msg_flags);
776 l2cap_chan_lock(chan);
777 err = l2cap_chan_send(chan, msg, len, sk->sk_priority);
778 l2cap_chan_unlock(chan);
783 static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
784 struct msghdr *msg, size_t len, int flags)
786 struct sock *sk = sock->sk;
787 struct l2cap_pinfo *pi = l2cap_pi(sk);
792 if (sk->sk_state == BT_CONNECT2 && test_bit(BT_SK_DEFER_SETUP,
793 &bt_sk(sk)->flags)) {
794 sk->sk_state = BT_CONFIG;
795 pi->chan->state = BT_CONFIG;
797 __l2cap_connect_rsp_defer(pi->chan);
804 if (sock->type == SOCK_STREAM)
805 err = bt_sock_stream_recvmsg(iocb, sock, msg, len, flags);
807 err = bt_sock_recvmsg(iocb, sock, msg, len, flags);
809 if (pi->chan->mode != L2CAP_MODE_ERTM)
812 /* Attempt to put pending rx data in the socket buffer */
816 if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state))
819 if (pi->rx_busy_skb) {
820 if (!sock_queue_rcv_skb(sk, pi->rx_busy_skb))
821 pi->rx_busy_skb = NULL;
826 /* Restore data flow when half of the receive buffer is
827 * available. This avoids resending large numbers of
830 if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf >> 1)
831 l2cap_chan_busy(pi->chan, 0);
838 /* Kill socket (only if zapped and orphan)
839 * Must be called on unlocked socket.
841 static void l2cap_sock_kill(struct sock *sk)
843 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
846 BT_DBG("sk %p state %s", sk, state_to_string(sk->sk_state));
848 /* Kill poor orphan */
850 l2cap_chan_put(l2cap_pi(sk)->chan);
851 sock_set_flag(sk, SOCK_DEAD);
855 static int l2cap_sock_shutdown(struct socket *sock, int how)
857 struct sock *sk = sock->sk;
858 struct l2cap_chan *chan;
859 struct l2cap_conn *conn;
862 BT_DBG("sock %p, sk %p", sock, sk);
867 chan = l2cap_pi(sk)->chan;
871 mutex_lock(&conn->chan_lock);
873 l2cap_chan_lock(chan);
876 if (!sk->sk_shutdown) {
877 if (chan->mode == L2CAP_MODE_ERTM)
878 err = __l2cap_wait_ack(sk);
880 sk->sk_shutdown = SHUTDOWN_MASK;
883 l2cap_chan_close(chan, 0);
886 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime)
887 err = bt_sock_wait_state(sk, BT_CLOSED,
891 if (!err && sk->sk_err)
895 l2cap_chan_unlock(chan);
898 mutex_unlock(&conn->chan_lock);
903 static int l2cap_sock_release(struct socket *sock)
905 struct sock *sk = sock->sk;
908 BT_DBG("sock %p, sk %p", sock, sk);
913 bt_sock_unlink(&l2cap_sk_list, sk);
915 err = l2cap_sock_shutdown(sock, 2);
922 static void l2cap_sock_cleanup_listen(struct sock *parent)
926 BT_DBG("parent %p", parent);
928 /* Close not yet accepted channels */
929 while ((sk = bt_accept_dequeue(parent, NULL))) {
930 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
932 l2cap_chan_lock(chan);
933 __clear_chan_timer(chan);
934 l2cap_chan_close(chan, ECONNRESET);
935 l2cap_chan_unlock(chan);
941 static struct l2cap_chan *l2cap_sock_new_connection_cb(struct l2cap_chan *chan)
943 struct sock *sk, *parent = chan->data;
945 /* Check for backlog size */
946 if (sk_acceptq_is_full(parent)) {
947 BT_DBG("backlog full %d", parent->sk_ack_backlog);
951 sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
956 bt_sock_reclassify_lock(sk, BTPROTO_L2CAP);
958 l2cap_sock_init(sk, parent);
960 bt_accept_enqueue(parent, sk);
962 return l2cap_pi(sk)->chan;
965 static int l2cap_sock_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb)
968 struct sock *sk = chan->data;
969 struct l2cap_pinfo *pi = l2cap_pi(sk);
973 if (pi->rx_busy_skb) {
978 err = sock_queue_rcv_skb(sk, skb);
980 /* For ERTM, handle one skb that doesn't fit into the recv
981 * buffer. This is important to do because the data frames
982 * have already been acked, so the skb cannot be discarded.
984 * Notify the l2cap core that the buffer is full, so the
985 * LOCAL_BUSY state is entered and no more frames are
986 * acked and reassembled until there is buffer space
989 if (err < 0 && pi->chan->mode == L2CAP_MODE_ERTM) {
990 pi->rx_busy_skb = skb;
991 l2cap_chan_busy(pi->chan, 1);
1001 static void l2cap_sock_close_cb(struct l2cap_chan *chan)
1003 struct sock *sk = chan->data;
1005 l2cap_sock_kill(sk);
1008 static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
1010 struct sock *sk = chan->data;
1011 struct sock *parent;
1015 parent = bt_sk(sk)->parent;
1017 sock_set_flag(sk, SOCK_ZAPPED);
1019 switch (chan->state) {
1025 l2cap_sock_cleanup_listen(sk);
1026 sk->sk_state = BT_CLOSED;
1027 chan->state = BT_CLOSED;
1031 sk->sk_state = BT_CLOSED;
1032 chan->state = BT_CLOSED;
1037 bt_accept_unlink(sk);
1038 parent->sk_data_ready(parent, 0);
1040 sk->sk_state_change(sk);
1049 static void l2cap_sock_state_change_cb(struct l2cap_chan *chan, int state)
1051 struct sock *sk = chan->data;
1053 sk->sk_state = state;
1056 static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan,
1057 unsigned long len, int nb)
1059 struct sk_buff *skb;
1062 l2cap_chan_unlock(chan);
1063 skb = bt_skb_send_alloc(chan->sk, len, nb, &err);
1064 l2cap_chan_lock(chan);
1067 return ERR_PTR(err);
1072 static void l2cap_sock_ready_cb(struct l2cap_chan *chan)
1074 struct sock *sk = chan->data;
1075 struct sock *parent;
1079 parent = bt_sk(sk)->parent;
1081 BT_DBG("sk %p, parent %p", sk, parent);
1083 sk->sk_state = BT_CONNECTED;
1084 sk->sk_state_change(sk);
1087 parent->sk_data_ready(parent, 0);
1092 static void l2cap_sock_defer_cb(struct l2cap_chan *chan)
1094 struct sock *sk = chan->data;
1095 struct sock *parent = bt_sk(sk)->parent;
1098 parent->sk_data_ready(parent, 0);
1101 static struct l2cap_ops l2cap_chan_ops = {
1102 .name = "L2CAP Socket Interface",
1103 .new_connection = l2cap_sock_new_connection_cb,
1104 .recv = l2cap_sock_recv_cb,
1105 .close = l2cap_sock_close_cb,
1106 .teardown = l2cap_sock_teardown_cb,
1107 .state_change = l2cap_sock_state_change_cb,
1108 .ready = l2cap_sock_ready_cb,
1109 .defer = l2cap_sock_defer_cb,
1110 .alloc_skb = l2cap_sock_alloc_skb_cb,
1113 static void l2cap_sock_destruct(struct sock *sk)
1115 BT_DBG("sk %p", sk);
1117 if (l2cap_pi(sk)->chan)
1118 l2cap_chan_put(l2cap_pi(sk)->chan);
1119 if (l2cap_pi(sk)->rx_busy_skb) {
1120 kfree_skb(l2cap_pi(sk)->rx_busy_skb);
1121 l2cap_pi(sk)->rx_busy_skb = NULL;
1124 skb_queue_purge(&sk->sk_receive_queue);
1125 skb_queue_purge(&sk->sk_write_queue);
1128 static void l2cap_sock_init(struct sock *sk, struct sock *parent)
1130 struct l2cap_pinfo *pi = l2cap_pi(sk);
1131 struct l2cap_chan *chan = pi->chan;
1133 BT_DBG("sk %p", sk);
1136 struct l2cap_chan *pchan = l2cap_pi(parent)->chan;
1138 sk->sk_type = parent->sk_type;
1139 bt_sk(sk)->flags = bt_sk(parent)->flags;
1141 chan->chan_type = pchan->chan_type;
1142 chan->imtu = pchan->imtu;
1143 chan->omtu = pchan->omtu;
1144 chan->conf_state = pchan->conf_state;
1145 chan->mode = pchan->mode;
1146 chan->fcs = pchan->fcs;
1147 chan->max_tx = pchan->max_tx;
1148 chan->tx_win = pchan->tx_win;
1149 chan->tx_win_max = pchan->tx_win_max;
1150 chan->sec_level = pchan->sec_level;
1151 chan->flags = pchan->flags;
1153 security_sk_clone(parent, sk);
1156 switch (sk->sk_type) {
1158 chan->chan_type = L2CAP_CHAN_RAW;
1161 chan->chan_type = L2CAP_CHAN_CONN_LESS;
1163 case SOCK_SEQPACKET:
1165 chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
1169 chan->imtu = L2CAP_DEFAULT_MTU;
1171 if (!disable_ertm && sk->sk_type == SOCK_STREAM) {
1172 chan->mode = L2CAP_MODE_ERTM;
1173 set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
1175 chan->mode = L2CAP_MODE_BASIC;
1178 l2cap_chan_set_defaults(chan);
1181 /* Default config options */
1182 chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
1185 chan->ops = &l2cap_chan_ops;
1188 static struct proto l2cap_proto = {
1190 .owner = THIS_MODULE,
1191 .obj_size = sizeof(struct l2cap_pinfo)
1194 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
1195 int proto, gfp_t prio)
1198 struct l2cap_chan *chan;
1200 sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto);
1204 sock_init_data(sock, sk);
1205 INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1207 sk->sk_destruct = l2cap_sock_destruct;
1208 sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
1210 sock_reset_flag(sk, SOCK_ZAPPED);
1212 sk->sk_protocol = proto;
1213 sk->sk_state = BT_OPEN;
1215 chan = l2cap_chan_create();
1221 l2cap_chan_hold(chan);
1225 l2cap_pi(sk)->chan = chan;
1230 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1235 BT_DBG("sock %p", sock);
1237 sock->state = SS_UNCONNECTED;
1239 if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1240 sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1241 return -ESOCKTNOSUPPORT;
1243 if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1246 sock->ops = &l2cap_sock_ops;
1248 sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC);
1252 l2cap_sock_init(sk, NULL);
1253 bt_sock_link(&l2cap_sk_list, sk);
1257 static const struct proto_ops l2cap_sock_ops = {
1258 .family = PF_BLUETOOTH,
1259 .owner = THIS_MODULE,
1260 .release = l2cap_sock_release,
1261 .bind = l2cap_sock_bind,
1262 .connect = l2cap_sock_connect,
1263 .listen = l2cap_sock_listen,
1264 .accept = l2cap_sock_accept,
1265 .getname = l2cap_sock_getname,
1266 .sendmsg = l2cap_sock_sendmsg,
1267 .recvmsg = l2cap_sock_recvmsg,
1268 .poll = bt_sock_poll,
1269 .ioctl = bt_sock_ioctl,
1270 .mmap = sock_no_mmap,
1271 .socketpair = sock_no_socketpair,
1272 .shutdown = l2cap_sock_shutdown,
1273 .setsockopt = l2cap_sock_setsockopt,
1274 .getsockopt = l2cap_sock_getsockopt
1277 static const struct net_proto_family l2cap_sock_family_ops = {
1278 .family = PF_BLUETOOTH,
1279 .owner = THIS_MODULE,
1280 .create = l2cap_sock_create,
1283 int __init l2cap_init_sockets(void)
1287 err = proto_register(&l2cap_proto, 0);
1291 err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1293 BT_ERR("L2CAP socket registration failed");
1297 err = bt_procfs_init(&init_net, "l2cap", &l2cap_sk_list,
1300 BT_ERR("Failed to create L2CAP proc file");
1301 bt_sock_unregister(BTPROTO_L2CAP);
1305 BT_INFO("L2CAP socket layer initialized");
1310 proto_unregister(&l2cap_proto);
1314 void l2cap_cleanup_sockets(void)
1316 bt_procfs_cleanup(&init_net, "l2cap");
1317 bt_sock_unregister(BTPROTO_L2CAP);
1318 proto_unregister(&l2cap_proto);