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/module.h>
31 #include <linux/export.h>
32 #include <linux/sched/signal.h>
34 #include <net/bluetooth/bluetooth.h>
35 #include <net/bluetooth/hci_core.h>
36 #include <net/bluetooth/l2cap.h>
40 static struct bt_sock_list l2cap_sk_list = {
41 .lock = __RW_LOCK_UNLOCKED(l2cap_sk_list.lock)
44 static const struct proto_ops l2cap_sock_ops;
45 static void l2cap_sock_init(struct sock *sk, struct sock *parent);
46 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
47 int proto, gfp_t prio, int kern);
49 bool l2cap_is_socket(struct socket *sock)
51 return sock && sock->ops == &l2cap_sock_ops;
53 EXPORT_SYMBOL(l2cap_is_socket);
55 static int l2cap_validate_bredr_psm(u16 psm)
57 /* PSM must be odd and lsb of upper byte must be 0 */
58 if ((psm & 0x0101) != 0x0001)
61 /* Restrict usage of well-known PSMs */
62 if (psm < L2CAP_PSM_DYN_START && !capable(CAP_NET_BIND_SERVICE))
68 static int l2cap_validate_le_psm(u16 psm)
70 /* Valid LE_PSM ranges are defined only until 0x00ff */
71 if (psm > L2CAP_PSM_LE_DYN_END)
74 /* Restrict fixed, SIG assigned PSM values to CAP_NET_BIND_SERVICE */
75 if (psm < L2CAP_PSM_LE_DYN_START && !capable(CAP_NET_BIND_SERVICE))
81 static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
83 struct sock *sk = sock->sk;
84 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
85 struct sockaddr_l2 la;
90 if (!addr || alen < offsetofend(struct sockaddr, sa_family) ||
91 addr->sa_family != AF_BLUETOOTH)
94 memset(&la, 0, sizeof(la));
95 len = min_t(unsigned int, sizeof(la), alen);
96 memcpy(&la, addr, len);
98 if (la.l2_cid && la.l2_psm)
101 if (!bdaddr_type_is_valid(la.l2_bdaddr_type))
104 if (bdaddr_type_is_le(la.l2_bdaddr_type)) {
105 /* We only allow ATT user space socket */
107 la.l2_cid != cpu_to_le16(L2CAP_CID_ATT))
113 if (sk->sk_state != BT_OPEN) {
119 __u16 psm = __le16_to_cpu(la.l2_psm);
121 if (la.l2_bdaddr_type == BDADDR_BREDR)
122 err = l2cap_validate_bredr_psm(psm);
124 err = l2cap_validate_le_psm(psm);
130 bacpy(&chan->src, &la.l2_bdaddr);
131 chan->src_type = la.l2_bdaddr_type;
134 err = l2cap_add_scid(chan, __le16_to_cpu(la.l2_cid));
136 err = l2cap_add_psm(chan, &la.l2_bdaddr, la.l2_psm);
141 switch (chan->chan_type) {
142 case L2CAP_CHAN_CONN_LESS:
143 if (__le16_to_cpu(la.l2_psm) == L2CAP_PSM_3DSP)
144 chan->sec_level = BT_SECURITY_SDP;
146 case L2CAP_CHAN_CONN_ORIENTED:
147 if (__le16_to_cpu(la.l2_psm) == L2CAP_PSM_SDP ||
148 __le16_to_cpu(la.l2_psm) == L2CAP_PSM_RFCOMM)
149 chan->sec_level = BT_SECURITY_SDP;
152 chan->sec_level = BT_SECURITY_SDP;
154 case L2CAP_CHAN_FIXED:
155 /* Fixed channels default to the L2CAP core not holding a
156 * hci_conn reference for them. For fixed channels mapping to
157 * L2CAP sockets we do want to hold a reference so set the
158 * appropriate flag to request it.
160 set_bit(FLAG_HOLD_HCI_CONN, &chan->flags);
164 /* Use L2CAP_MODE_LE_FLOWCTL (CoC) in case of LE address and
165 * L2CAP_MODE_EXT_FLOWCTL (ECRED) has not been set.
167 if (chan->psm && bdaddr_type_is_le(chan->src_type) &&
168 chan->mode != L2CAP_MODE_EXT_FLOWCTL)
169 chan->mode = L2CAP_MODE_LE_FLOWCTL;
171 chan->state = BT_BOUND;
172 sk->sk_state = BT_BOUND;
179 static void l2cap_sock_init_pid(struct sock *sk)
181 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
183 /* Only L2CAP_MODE_EXT_FLOWCTL ever need to access the PID in order to
184 * group the channels being requested.
186 if (chan->mode != L2CAP_MODE_EXT_FLOWCTL)
189 spin_lock(&sk->sk_peer_lock);
190 sk->sk_peer_pid = get_pid(task_tgid(current));
191 spin_unlock(&sk->sk_peer_lock);
194 static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr,
197 struct sock *sk = sock->sk;
198 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
199 struct sockaddr_l2 la;
206 zapped = sock_flag(sk, SOCK_ZAPPED);
212 if (!addr || alen < offsetofend(struct sockaddr, sa_family) ||
213 addr->sa_family != AF_BLUETOOTH)
216 memset(&la, 0, sizeof(la));
217 len = min_t(unsigned int, sizeof(la), alen);
218 memcpy(&la, addr, len);
220 if (la.l2_cid && la.l2_psm)
223 if (!bdaddr_type_is_valid(la.l2_bdaddr_type))
226 /* Check that the socket wasn't bound to something that
227 * conflicts with the address given to connect(). If chan->src
228 * is BDADDR_ANY it means bind() was never used, in which case
229 * chan->src_type and la.l2_bdaddr_type do not need to match.
231 if (chan->src_type == BDADDR_BREDR && bacmp(&chan->src, BDADDR_ANY) &&
232 bdaddr_type_is_le(la.l2_bdaddr_type)) {
233 /* Old user space versions will try to incorrectly bind
234 * the ATT socket using BDADDR_BREDR. We need to accept
235 * this and fix up the source address type only when
236 * both the source CID and destination CID indicate
237 * ATT. Anything else is an invalid combination.
239 if (chan->scid != L2CAP_CID_ATT ||
240 la.l2_cid != cpu_to_le16(L2CAP_CID_ATT))
243 /* We don't have the hdev available here to make a
244 * better decision on random vs public, but since all
245 * user space versions that exhibit this issue anyway do
246 * not support random local addresses assuming public
247 * here is good enough.
249 chan->src_type = BDADDR_LE_PUBLIC;
252 if (chan->src_type != BDADDR_BREDR && la.l2_bdaddr_type == BDADDR_BREDR)
255 if (bdaddr_type_is_le(la.l2_bdaddr_type)) {
256 /* We only allow ATT user space socket */
258 la.l2_cid != cpu_to_le16(L2CAP_CID_ATT))
262 /* Use L2CAP_MODE_LE_FLOWCTL (CoC) in case of LE address and
263 * L2CAP_MODE_EXT_FLOWCTL (ECRED) has not been set.
265 if (chan->psm && bdaddr_type_is_le(chan->src_type) &&
266 chan->mode != L2CAP_MODE_EXT_FLOWCTL)
267 chan->mode = L2CAP_MODE_LE_FLOWCTL;
269 l2cap_sock_init_pid(sk);
271 err = l2cap_chan_connect(chan, la.l2_psm, __le16_to_cpu(la.l2_cid),
272 &la.l2_bdaddr, la.l2_bdaddr_type);
278 err = bt_sock_wait_state(sk, BT_CONNECTED,
279 sock_sndtimeo(sk, flags & O_NONBLOCK));
286 static int l2cap_sock_listen(struct socket *sock, int backlog)
288 struct sock *sk = sock->sk;
289 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
292 BT_DBG("sk %p backlog %d", sk, backlog);
296 if (sk->sk_state != BT_BOUND) {
301 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM) {
306 switch (chan->mode) {
307 case L2CAP_MODE_BASIC:
308 case L2CAP_MODE_LE_FLOWCTL:
310 case L2CAP_MODE_EXT_FLOWCTL:
316 case L2CAP_MODE_ERTM:
317 case L2CAP_MODE_STREAMING:
326 l2cap_sock_init_pid(sk);
328 sk->sk_max_ack_backlog = backlog;
329 sk->sk_ack_backlog = 0;
331 /* Listening channels need to use nested locking in order not to
332 * cause lockdep warnings when the created child channels end up
333 * being locked in the same thread as the parent channel.
335 atomic_set(&chan->nesting, L2CAP_NESTING_PARENT);
337 chan->state = BT_LISTEN;
338 sk->sk_state = BT_LISTEN;
345 static int l2cap_sock_accept(struct socket *sock, struct socket *newsock,
346 int flags, bool kern)
348 DEFINE_WAIT_FUNC(wait, woken_wake_function);
349 struct sock *sk = sock->sk, *nsk;
353 lock_sock_nested(sk, L2CAP_NESTING_PARENT);
355 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
357 BT_DBG("sk %p timeo %ld", sk, timeo);
359 /* Wait for an incoming connection. (wake-one). */
360 add_wait_queue_exclusive(sk_sleep(sk), &wait);
362 if (sk->sk_state != BT_LISTEN) {
367 nsk = bt_accept_dequeue(sk, newsock);
376 if (signal_pending(current)) {
377 err = sock_intr_errno(timeo);
383 timeo = wait_woken(&wait, TASK_INTERRUPTIBLE, timeo);
385 lock_sock_nested(sk, L2CAP_NESTING_PARENT);
387 remove_wait_queue(sk_sleep(sk), &wait);
392 newsock->state = SS_CONNECTED;
394 BT_DBG("new socket %p", nsk);
401 static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr,
404 struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
405 struct sock *sk = sock->sk;
406 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
408 BT_DBG("sock %p, sk %p", sock, sk);
410 if (peer && sk->sk_state != BT_CONNECTED &&
411 sk->sk_state != BT_CONNECT && sk->sk_state != BT_CONNECT2 &&
412 sk->sk_state != BT_CONFIG)
415 memset(la, 0, sizeof(struct sockaddr_l2));
416 addr->sa_family = AF_BLUETOOTH;
418 la->l2_psm = chan->psm;
421 bacpy(&la->l2_bdaddr, &chan->dst);
422 la->l2_cid = cpu_to_le16(chan->dcid);
423 la->l2_bdaddr_type = chan->dst_type;
425 bacpy(&la->l2_bdaddr, &chan->src);
426 la->l2_cid = cpu_to_le16(chan->scid);
427 la->l2_bdaddr_type = chan->src_type;
430 return sizeof(struct sockaddr_l2);
433 static int l2cap_get_mode(struct l2cap_chan *chan)
435 switch (chan->mode) {
436 case L2CAP_MODE_BASIC:
437 return BT_MODE_BASIC;
438 case L2CAP_MODE_ERTM:
440 case L2CAP_MODE_STREAMING:
441 return BT_MODE_STREAMING;
442 case L2CAP_MODE_LE_FLOWCTL:
443 return BT_MODE_LE_FLOWCTL;
444 case L2CAP_MODE_EXT_FLOWCTL:
445 return BT_MODE_EXT_FLOWCTL;
451 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname,
452 char __user *optval, int __user *optlen)
454 struct sock *sk = sock->sk;
455 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
456 struct l2cap_options opts;
457 struct l2cap_conninfo cinfo;
463 if (get_user(len, optlen))
470 /* LE sockets should use BT_SNDMTU/BT_RCVMTU, but since
471 * legacy ATT code depends on getsockopt for
472 * L2CAP_OPTIONS we need to let this pass.
474 if (bdaddr_type_is_le(chan->src_type) &&
475 chan->scid != L2CAP_CID_ATT) {
480 /* Only BR/EDR modes are supported here */
481 switch (chan->mode) {
482 case L2CAP_MODE_BASIC:
483 case L2CAP_MODE_ERTM:
484 case L2CAP_MODE_STREAMING:
494 memset(&opts, 0, sizeof(opts));
495 opts.imtu = chan->imtu;
496 opts.omtu = chan->omtu;
497 opts.flush_to = chan->flush_to;
498 opts.mode = chan->mode;
499 opts.fcs = chan->fcs;
500 opts.max_tx = chan->max_tx;
501 opts.txwin_size = chan->tx_win;
503 BT_DBG("mode 0x%2.2x", chan->mode);
505 len = min_t(unsigned int, len, sizeof(opts));
506 if (copy_to_user(optval, (char *) &opts, len))
512 switch (chan->sec_level) {
513 case BT_SECURITY_LOW:
516 case BT_SECURITY_MEDIUM:
517 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
519 case BT_SECURITY_HIGH:
520 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
523 case BT_SECURITY_FIPS:
524 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
525 L2CAP_LM_SECURE | L2CAP_LM_FIPS;
532 if (test_bit(FLAG_ROLE_SWITCH, &chan->flags))
533 opt |= L2CAP_LM_MASTER;
535 if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags))
536 opt |= L2CAP_LM_RELIABLE;
538 if (put_user(opt, (u32 __user *) optval))
544 if (sk->sk_state != BT_CONNECTED &&
545 !(sk->sk_state == BT_CONNECT2 &&
546 test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))) {
551 memset(&cinfo, 0, sizeof(cinfo));
552 cinfo.hci_handle = chan->conn->hcon->handle;
553 memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3);
555 len = min_t(unsigned int, len, sizeof(cinfo));
556 if (copy_to_user(optval, (char *) &cinfo, len))
570 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname,
571 char __user *optval, int __user *optlen)
573 struct sock *sk = sock->sk;
574 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
575 struct bt_security sec;
578 int len, mode, err = 0;
582 if (level == SOL_L2CAP)
583 return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
585 if (level != SOL_BLUETOOTH)
588 if (get_user(len, optlen))
595 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
596 chan->chan_type != L2CAP_CHAN_FIXED &&
597 chan->chan_type != L2CAP_CHAN_RAW) {
602 memset(&sec, 0, sizeof(sec));
604 sec.level = chan->conn->hcon->sec_level;
606 if (sk->sk_state == BT_CONNECTED)
607 sec.key_size = chan->conn->hcon->enc_key_size;
609 sec.level = chan->sec_level;
612 len = min_t(unsigned int, len, sizeof(sec));
613 if (copy_to_user(optval, (char *) &sec, len))
619 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
624 if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags),
625 (u32 __user *) optval))
631 if (put_user(test_bit(FLAG_FLUSHABLE, &chan->flags),
632 (u32 __user *) optval))
638 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM
639 && sk->sk_type != SOCK_RAW) {
644 pwr.force_active = test_bit(FLAG_FORCE_ACTIVE, &chan->flags);
646 len = min_t(unsigned int, len, sizeof(pwr));
647 if (copy_to_user(optval, (char *) &pwr, len))
652 case BT_CHANNEL_POLICY:
653 if (put_user(chan->chan_policy, (u32 __user *) optval))
658 if (!bdaddr_type_is_le(chan->src_type)) {
663 if (sk->sk_state != BT_CONNECTED) {
668 if (put_user(chan->omtu, (u16 __user *) optval))
673 if (!bdaddr_type_is_le(chan->src_type)) {
678 if (put_user(chan->imtu, (u16 __user *) optval))
683 if (sk->sk_state != BT_CONNECTED) {
688 phys = hci_conn_get_phy(chan->conn->hcon);
690 if (put_user(phys, (u32 __user *) optval))
700 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) {
705 mode = l2cap_get_mode(chan);
711 if (put_user(mode, (u8 __user *) optval))
724 static bool l2cap_valid_mtu(struct l2cap_chan *chan, u16 mtu)
726 switch (chan->scid) {
728 if (mtu < L2CAP_LE_MIN_MTU)
733 if (mtu < L2CAP_DEFAULT_MIN_MTU)
740 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
741 sockptr_t optval, unsigned int optlen)
743 struct sock *sk = sock->sk;
744 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
745 struct l2cap_options opts;
755 if (bdaddr_type_is_le(chan->src_type)) {
760 if (sk->sk_state == BT_CONNECTED) {
765 opts.imtu = chan->imtu;
766 opts.omtu = chan->omtu;
767 opts.flush_to = chan->flush_to;
768 opts.mode = chan->mode;
769 opts.fcs = chan->fcs;
770 opts.max_tx = chan->max_tx;
771 opts.txwin_size = chan->tx_win;
773 len = min_t(unsigned int, sizeof(opts), optlen);
774 if (copy_from_sockptr(&opts, optval, len)) {
779 if (opts.txwin_size > L2CAP_DEFAULT_EXT_WINDOW) {
784 if (!l2cap_valid_mtu(chan, opts.imtu)) {
789 /* Only BR/EDR modes are supported here */
791 case L2CAP_MODE_BASIC:
792 clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
794 case L2CAP_MODE_ERTM:
795 case L2CAP_MODE_STREAMING:
807 chan->mode = opts.mode;
809 BT_DBG("mode 0x%2.2x", chan->mode);
811 chan->imtu = opts.imtu;
812 chan->omtu = opts.omtu;
813 chan->fcs = opts.fcs;
814 chan->max_tx = opts.max_tx;
815 chan->tx_win = opts.txwin_size;
816 chan->flush_to = opts.flush_to;
820 if (copy_from_sockptr(&opt, optval, sizeof(u32))) {
825 if (opt & L2CAP_LM_FIPS) {
830 if (opt & L2CAP_LM_AUTH)
831 chan->sec_level = BT_SECURITY_LOW;
832 if (opt & L2CAP_LM_ENCRYPT)
833 chan->sec_level = BT_SECURITY_MEDIUM;
834 if (opt & L2CAP_LM_SECURE)
835 chan->sec_level = BT_SECURITY_HIGH;
837 if (opt & L2CAP_LM_MASTER)
838 set_bit(FLAG_ROLE_SWITCH, &chan->flags);
840 clear_bit(FLAG_ROLE_SWITCH, &chan->flags);
842 if (opt & L2CAP_LM_RELIABLE)
843 set_bit(FLAG_FORCE_RELIABLE, &chan->flags);
845 clear_bit(FLAG_FORCE_RELIABLE, &chan->flags);
857 static int l2cap_set_mode(struct l2cap_chan *chan, u8 mode)
861 if (bdaddr_type_is_le(chan->src_type))
863 mode = L2CAP_MODE_BASIC;
864 clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
867 if (!disable_ertm || bdaddr_type_is_le(chan->src_type))
869 mode = L2CAP_MODE_ERTM;
871 case BT_MODE_STREAMING:
872 if (!disable_ertm || bdaddr_type_is_le(chan->src_type))
874 mode = L2CAP_MODE_STREAMING;
876 case BT_MODE_LE_FLOWCTL:
877 if (!bdaddr_type_is_le(chan->src_type))
879 mode = L2CAP_MODE_LE_FLOWCTL;
881 case BT_MODE_EXT_FLOWCTL:
882 /* TODO: Add support for ECRED PDUs to BR/EDR */
883 if (!bdaddr_type_is_le(chan->src_type))
885 mode = L2CAP_MODE_EXT_FLOWCTL;
896 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
897 sockptr_t optval, unsigned int optlen)
899 struct sock *sk = sock->sk;
900 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
901 struct bt_security sec;
903 struct l2cap_conn *conn;
911 if (level == SOL_L2CAP)
912 return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
914 if (level != SOL_BLUETOOTH)
921 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
922 chan->chan_type != L2CAP_CHAN_FIXED &&
923 chan->chan_type != L2CAP_CHAN_RAW) {
928 sec.level = BT_SECURITY_LOW;
930 len = min_t(unsigned int, sizeof(sec), optlen);
931 if (copy_from_sockptr(&sec, optval, len)) {
936 if (sec.level < BT_SECURITY_LOW ||
937 sec.level > BT_SECURITY_FIPS) {
942 chan->sec_level = sec.level;
949 /* change security for LE channels */
950 if (chan->scid == L2CAP_CID_ATT) {
951 if (smp_conn_security(conn->hcon, sec.level)) {
956 set_bit(FLAG_PENDING_SECURITY, &chan->flags);
957 sk->sk_state = BT_CONFIG;
958 chan->state = BT_CONFIG;
960 /* or for ACL link */
961 } else if ((sk->sk_state == BT_CONNECT2 &&
962 test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) ||
963 sk->sk_state == BT_CONNECTED) {
964 if (!l2cap_chan_check_security(chan, true))
965 set_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
967 sk->sk_state_change(sk);
974 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
979 if (copy_from_sockptr(&opt, optval, sizeof(u32))) {
985 set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
986 set_bit(FLAG_DEFER_SETUP, &chan->flags);
988 clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
989 clear_bit(FLAG_DEFER_SETUP, &chan->flags);
994 if (copy_from_sockptr(&opt, optval, sizeof(u32))) {
999 if (opt > BT_FLUSHABLE_ON) {
1004 if (opt == BT_FLUSHABLE_OFF) {
1006 /* proceed further only when we have l2cap_conn and
1007 No Flush support in the LM */
1008 if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
1015 set_bit(FLAG_FLUSHABLE, &chan->flags);
1017 clear_bit(FLAG_FLUSHABLE, &chan->flags);
1021 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
1022 chan->chan_type != L2CAP_CHAN_RAW) {
1027 pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
1029 len = min_t(unsigned int, sizeof(pwr), optlen);
1030 if (copy_from_sockptr(&pwr, optval, len)) {
1035 if (pwr.force_active)
1036 set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
1038 clear_bit(FLAG_FORCE_ACTIVE, &chan->flags);
1041 case BT_CHANNEL_POLICY:
1042 if (copy_from_sockptr(&opt, optval, sizeof(u32))) {
1047 if (opt > BT_CHANNEL_POLICY_AMP_PREFERRED) {
1052 if (chan->mode != L2CAP_MODE_ERTM &&
1053 chan->mode != L2CAP_MODE_STREAMING) {
1058 chan->chan_policy = (u8) opt;
1060 if (sk->sk_state == BT_CONNECTED &&
1061 chan->move_role == L2CAP_MOVE_ROLE_NONE)
1062 l2cap_move_start(chan);
1067 if (!bdaddr_type_is_le(chan->src_type)) {
1072 /* Setting is not supported as it's the remote side that
1079 if (!bdaddr_type_is_le(chan->src_type)) {
1084 if (chan->mode == L2CAP_MODE_LE_FLOWCTL &&
1085 sk->sk_state == BT_CONNECTED) {
1090 if (copy_from_sockptr(&mtu, optval, sizeof(u16))) {
1095 if (chan->mode == L2CAP_MODE_EXT_FLOWCTL &&
1096 sk->sk_state == BT_CONNECTED)
1097 err = l2cap_chan_reconfigure(chan, mtu);
1104 if (!enable_ecred) {
1109 BT_DBG("sk->sk_state %u", sk->sk_state);
1111 if (sk->sk_state != BT_BOUND) {
1116 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) {
1121 if (copy_from_sockptr(&mode, optval, sizeof(u8))) {
1126 BT_DBG("mode %u", mode);
1128 err = l2cap_set_mode(chan, mode);
1132 BT_DBG("mode 0x%2.2x", chan->mode);
1145 static int l2cap_sock_sendmsg(struct socket *sock, struct msghdr *msg,
1148 struct sock *sk = sock->sk;
1149 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
1152 BT_DBG("sock %p, sk %p", sock, sk);
1154 err = sock_error(sk);
1158 if (msg->msg_flags & MSG_OOB)
1161 if (sk->sk_state != BT_CONNECTED)
1165 err = bt_sock_wait_ready(sk, msg->msg_flags);
1170 l2cap_chan_lock(chan);
1171 err = l2cap_chan_send(chan, msg, len);
1172 l2cap_chan_unlock(chan);
1177 static int l2cap_sock_recvmsg(struct socket *sock, struct msghdr *msg,
1178 size_t len, int flags)
1180 struct sock *sk = sock->sk;
1181 struct l2cap_pinfo *pi = l2cap_pi(sk);
1186 if (sk->sk_state == BT_CONNECT2 && test_bit(BT_SK_DEFER_SETUP,
1187 &bt_sk(sk)->flags)) {
1188 if (pi->chan->mode == L2CAP_MODE_EXT_FLOWCTL) {
1189 sk->sk_state = BT_CONNECTED;
1190 pi->chan->state = BT_CONNECTED;
1191 __l2cap_ecred_conn_rsp_defer(pi->chan);
1192 } else if (bdaddr_type_is_le(pi->chan->src_type)) {
1193 sk->sk_state = BT_CONNECTED;
1194 pi->chan->state = BT_CONNECTED;
1195 __l2cap_le_connect_rsp_defer(pi->chan);
1197 sk->sk_state = BT_CONFIG;
1198 pi->chan->state = BT_CONFIG;
1199 __l2cap_connect_rsp_defer(pi->chan);
1208 if (sock->type == SOCK_STREAM)
1209 err = bt_sock_stream_recvmsg(sock, msg, len, flags);
1211 err = bt_sock_recvmsg(sock, msg, len, flags);
1213 if (pi->chan->mode != L2CAP_MODE_ERTM)
1216 /* Attempt to put pending rx data in the socket buffer */
1220 if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state))
1223 if (pi->rx_busy_skb) {
1224 if (!__sock_queue_rcv_skb(sk, pi->rx_busy_skb))
1225 pi->rx_busy_skb = NULL;
1230 /* Restore data flow when half of the receive buffer is
1231 * available. This avoids resending large numbers of
1234 if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf >> 1)
1235 l2cap_chan_busy(pi->chan, 0);
1242 /* Kill socket (only if zapped and orphan)
1243 * Must be called on unlocked socket, with l2cap channel lock.
1245 static void l2cap_sock_kill(struct sock *sk)
1247 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
1250 BT_DBG("sk %p state %s", sk, state_to_string(sk->sk_state));
1252 /* Kill poor orphan */
1254 l2cap_chan_put(l2cap_pi(sk)->chan);
1255 sock_set_flag(sk, SOCK_DEAD);
1259 static int __l2cap_wait_ack(struct sock *sk, struct l2cap_chan *chan)
1261 DECLARE_WAITQUEUE(wait, current);
1263 int timeo = L2CAP_WAIT_ACK_POLL_PERIOD;
1264 /* Timeout to prevent infinite loop */
1265 unsigned long timeout = jiffies + L2CAP_WAIT_ACK_TIMEOUT;
1267 add_wait_queue(sk_sleep(sk), &wait);
1268 set_current_state(TASK_INTERRUPTIBLE);
1270 BT_DBG("Waiting for %d ACKs, timeout %04d ms",
1271 chan->unacked_frames, time_after(jiffies, timeout) ? 0 :
1272 jiffies_to_msecs(timeout - jiffies));
1275 timeo = L2CAP_WAIT_ACK_POLL_PERIOD;
1277 if (signal_pending(current)) {
1278 err = sock_intr_errno(timeo);
1283 timeo = schedule_timeout(timeo);
1285 set_current_state(TASK_INTERRUPTIBLE);
1287 err = sock_error(sk);
1291 if (time_after(jiffies, timeout)) {
1296 } while (chan->unacked_frames > 0 &&
1297 chan->state == BT_CONNECTED);
1299 set_current_state(TASK_RUNNING);
1300 remove_wait_queue(sk_sleep(sk), &wait);
1304 static int l2cap_sock_shutdown(struct socket *sock, int how)
1306 struct sock *sk = sock->sk;
1307 struct l2cap_chan *chan;
1308 struct l2cap_conn *conn;
1311 BT_DBG("sock %p, sk %p, how %d", sock, sk, how);
1313 /* 'how' parameter is mapped to sk_shutdown as follows:
1314 * SHUT_RD (0) --> RCV_SHUTDOWN (1)
1315 * SHUT_WR (1) --> SEND_SHUTDOWN (2)
1316 * SHUT_RDWR (2) --> SHUTDOWN_MASK (3)
1325 if ((sk->sk_shutdown & how) == how)
1326 goto shutdown_already;
1328 BT_DBG("Handling sock shutdown");
1330 /* prevent sk structure from being freed whilst unlocked */
1333 chan = l2cap_pi(sk)->chan;
1334 /* prevent chan structure from being freed whilst unlocked */
1335 l2cap_chan_hold(chan);
1337 BT_DBG("chan %p state %s", chan, state_to_string(chan->state));
1339 if (chan->mode == L2CAP_MODE_ERTM &&
1340 chan->unacked_frames > 0 &&
1341 chan->state == BT_CONNECTED) {
1342 err = __l2cap_wait_ack(sk, chan);
1344 /* After waiting for ACKs, check whether shutdown
1345 * has already been actioned to close the L2CAP
1346 * link such as by l2cap_disconnection_req().
1348 if ((sk->sk_shutdown & how) == how)
1349 goto shutdown_matched;
1352 /* Try setting the RCV_SHUTDOWN bit, return early if SEND_SHUTDOWN
1355 if ((how & RCV_SHUTDOWN) && !(sk->sk_shutdown & RCV_SHUTDOWN)) {
1356 sk->sk_shutdown |= RCV_SHUTDOWN;
1357 if ((sk->sk_shutdown & how) == how)
1358 goto shutdown_matched;
1361 sk->sk_shutdown |= SEND_SHUTDOWN;
1364 l2cap_chan_lock(chan);
1367 /* prevent conn structure from being freed */
1368 l2cap_conn_get(conn);
1369 l2cap_chan_unlock(chan);
1372 /* mutex lock must be taken before l2cap_chan_lock() */
1373 mutex_lock(&conn->chan_lock);
1375 l2cap_chan_lock(chan);
1376 l2cap_chan_close(chan, 0);
1377 l2cap_chan_unlock(chan);
1380 mutex_unlock(&conn->chan_lock);
1381 l2cap_conn_put(conn);
1386 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
1387 !(current->flags & PF_EXITING))
1388 err = bt_sock_wait_state(sk, BT_CLOSED,
1392 l2cap_chan_put(chan);
1396 if (!err && sk->sk_err)
1401 BT_DBG("Sock shutdown complete err: %d", err);
1406 static int l2cap_sock_release(struct socket *sock)
1408 struct sock *sk = sock->sk;
1410 struct l2cap_chan *chan;
1412 BT_DBG("sock %p, sk %p", sock, sk);
1417 bt_sock_unlink(&l2cap_sk_list, sk);
1419 err = l2cap_sock_shutdown(sock, SHUT_RDWR);
1420 chan = l2cap_pi(sk)->chan;
1422 l2cap_chan_hold(chan);
1423 l2cap_chan_lock(chan);
1426 l2cap_sock_kill(sk);
1428 l2cap_chan_unlock(chan);
1429 l2cap_chan_put(chan);
1434 static void l2cap_sock_cleanup_listen(struct sock *parent)
1438 BT_DBG("parent %p state %s", parent,
1439 state_to_string(parent->sk_state));
1441 /* Close not yet accepted channels */
1442 while ((sk = bt_accept_dequeue(parent, NULL))) {
1443 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
1445 BT_DBG("child chan %p state %s", chan,
1446 state_to_string(chan->state));
1448 l2cap_chan_hold(chan);
1449 l2cap_chan_lock(chan);
1451 __clear_chan_timer(chan);
1452 l2cap_chan_close(chan, ECONNRESET);
1453 l2cap_sock_kill(sk);
1455 l2cap_chan_unlock(chan);
1456 l2cap_chan_put(chan);
1460 static struct l2cap_chan *l2cap_sock_new_connection_cb(struct l2cap_chan *chan)
1462 struct sock *sk, *parent = chan->data;
1466 /* Check for backlog size */
1467 if (sk_acceptq_is_full(parent)) {
1468 BT_DBG("backlog full %d", parent->sk_ack_backlog);
1469 release_sock(parent);
1473 sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
1476 release_sock(parent);
1480 bt_sock_reclassify_lock(sk, BTPROTO_L2CAP);
1482 l2cap_sock_init(sk, parent);
1484 bt_accept_enqueue(parent, sk, false);
1486 release_sock(parent);
1488 return l2cap_pi(sk)->chan;
1491 static int l2cap_sock_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb)
1493 struct sock *sk = chan->data;
1498 if (l2cap_pi(sk)->rx_busy_skb) {
1503 if (chan->mode != L2CAP_MODE_ERTM &&
1504 chan->mode != L2CAP_MODE_STREAMING) {
1505 /* Even if no filter is attached, we could potentially
1506 * get errors from security modules, etc.
1508 err = sk_filter(sk, skb);
1513 err = __sock_queue_rcv_skb(sk, skb);
1515 /* For ERTM, handle one skb that doesn't fit into the recv
1516 * buffer. This is important to do because the data frames
1517 * have already been acked, so the skb cannot be discarded.
1519 * Notify the l2cap core that the buffer is full, so the
1520 * LOCAL_BUSY state is entered and no more frames are
1521 * acked and reassembled until there is buffer space
1524 if (err < 0 && chan->mode == L2CAP_MODE_ERTM) {
1525 l2cap_pi(sk)->rx_busy_skb = skb;
1526 l2cap_chan_busy(chan, 1);
1536 static void l2cap_sock_close_cb(struct l2cap_chan *chan)
1538 struct sock *sk = chan->data;
1543 l2cap_sock_kill(sk);
1546 static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
1548 struct sock *sk = chan->data;
1549 struct sock *parent;
1554 BT_DBG("chan %p state %s", chan, state_to_string(chan->state));
1556 /* This callback can be called both for server (BT_LISTEN)
1557 * sockets as well as "normal" ones. To avoid lockdep warnings
1558 * with child socket locking (through l2cap_sock_cleanup_listen)
1559 * we need separation into separate nesting levels. The simplest
1560 * way to accomplish this is to inherit the nesting level used
1563 lock_sock_nested(sk, atomic_read(&chan->nesting));
1565 parent = bt_sk(sk)->parent;
1567 switch (chan->state) {
1573 l2cap_sock_cleanup_listen(sk);
1574 sk->sk_state = BT_CLOSED;
1575 chan->state = BT_CLOSED;
1579 sk->sk_state = BT_CLOSED;
1580 chan->state = BT_CLOSED;
1585 bt_accept_unlink(sk);
1586 parent->sk_data_ready(parent);
1588 sk->sk_state_change(sk);
1595 /* Only zap after cleanup to avoid use after free race */
1596 sock_set_flag(sk, SOCK_ZAPPED);
1600 static void l2cap_sock_state_change_cb(struct l2cap_chan *chan, int state,
1603 struct sock *sk = chan->data;
1605 sk->sk_state = state;
1611 static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan,
1612 unsigned long hdr_len,
1613 unsigned long len, int nb)
1615 struct sock *sk = chan->data;
1616 struct sk_buff *skb;
1619 l2cap_chan_unlock(chan);
1620 skb = bt_skb_send_alloc(sk, hdr_len + len, nb, &err);
1621 l2cap_chan_lock(chan);
1624 return ERR_PTR(err);
1626 skb->priority = sk->sk_priority;
1628 bt_cb(skb)->l2cap.chan = chan;
1633 static void l2cap_sock_ready_cb(struct l2cap_chan *chan)
1635 struct sock *sk = chan->data;
1636 struct sock *parent;
1640 parent = bt_sk(sk)->parent;
1642 BT_DBG("sk %p, parent %p", sk, parent);
1644 sk->sk_state = BT_CONNECTED;
1645 sk->sk_state_change(sk);
1648 parent->sk_data_ready(parent);
1653 static void l2cap_sock_defer_cb(struct l2cap_chan *chan)
1655 struct sock *parent, *sk = chan->data;
1659 parent = bt_sk(sk)->parent;
1661 parent->sk_data_ready(parent);
1666 static void l2cap_sock_resume_cb(struct l2cap_chan *chan)
1668 struct sock *sk = chan->data;
1670 if (test_and_clear_bit(FLAG_PENDING_SECURITY, &chan->flags)) {
1671 sk->sk_state = BT_CONNECTED;
1672 chan->state = BT_CONNECTED;
1675 clear_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
1676 sk->sk_state_change(sk);
1679 static void l2cap_sock_set_shutdown_cb(struct l2cap_chan *chan)
1681 struct sock *sk = chan->data;
1684 sk->sk_shutdown = SHUTDOWN_MASK;
1688 static long l2cap_sock_get_sndtimeo_cb(struct l2cap_chan *chan)
1690 struct sock *sk = chan->data;
1692 return sk->sk_sndtimeo;
1695 static struct pid *l2cap_sock_get_peer_pid_cb(struct l2cap_chan *chan)
1697 struct sock *sk = chan->data;
1699 return sk->sk_peer_pid;
1702 static void l2cap_sock_suspend_cb(struct l2cap_chan *chan)
1704 struct sock *sk = chan->data;
1706 set_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
1707 sk->sk_state_change(sk);
1710 static int l2cap_sock_filter(struct l2cap_chan *chan, struct sk_buff *skb)
1712 struct sock *sk = chan->data;
1714 switch (chan->mode) {
1715 case L2CAP_MODE_ERTM:
1716 case L2CAP_MODE_STREAMING:
1717 return sk_filter(sk, skb);
1723 static const struct l2cap_ops l2cap_chan_ops = {
1724 .name = "L2CAP Socket Interface",
1725 .new_connection = l2cap_sock_new_connection_cb,
1726 .recv = l2cap_sock_recv_cb,
1727 .close = l2cap_sock_close_cb,
1728 .teardown = l2cap_sock_teardown_cb,
1729 .state_change = l2cap_sock_state_change_cb,
1730 .ready = l2cap_sock_ready_cb,
1731 .defer = l2cap_sock_defer_cb,
1732 .resume = l2cap_sock_resume_cb,
1733 .suspend = l2cap_sock_suspend_cb,
1734 .set_shutdown = l2cap_sock_set_shutdown_cb,
1735 .get_sndtimeo = l2cap_sock_get_sndtimeo_cb,
1736 .get_peer_pid = l2cap_sock_get_peer_pid_cb,
1737 .alloc_skb = l2cap_sock_alloc_skb_cb,
1738 .filter = l2cap_sock_filter,
1741 static void l2cap_sock_destruct(struct sock *sk)
1743 BT_DBG("sk %p", sk);
1745 if (l2cap_pi(sk)->chan) {
1746 l2cap_pi(sk)->chan->data = NULL;
1747 l2cap_chan_put(l2cap_pi(sk)->chan);
1750 if (l2cap_pi(sk)->rx_busy_skb) {
1751 kfree_skb(l2cap_pi(sk)->rx_busy_skb);
1752 l2cap_pi(sk)->rx_busy_skb = NULL;
1755 skb_queue_purge(&sk->sk_receive_queue);
1756 skb_queue_purge(&sk->sk_write_queue);
1759 static void l2cap_skb_msg_name(struct sk_buff *skb, void *msg_name,
1762 DECLARE_SOCKADDR(struct sockaddr_l2 *, la, msg_name);
1764 memset(la, 0, sizeof(struct sockaddr_l2));
1765 la->l2_family = AF_BLUETOOTH;
1766 la->l2_psm = bt_cb(skb)->l2cap.psm;
1767 bacpy(&la->l2_bdaddr, &bt_cb(skb)->l2cap.bdaddr);
1769 *msg_namelen = sizeof(struct sockaddr_l2);
1772 static void l2cap_sock_init(struct sock *sk, struct sock *parent)
1774 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
1776 BT_DBG("sk %p", sk);
1779 struct l2cap_chan *pchan = l2cap_pi(parent)->chan;
1781 sk->sk_type = parent->sk_type;
1782 bt_sk(sk)->flags = bt_sk(parent)->flags;
1784 chan->chan_type = pchan->chan_type;
1785 chan->imtu = pchan->imtu;
1786 chan->omtu = pchan->omtu;
1787 chan->conf_state = pchan->conf_state;
1788 chan->mode = pchan->mode;
1789 chan->fcs = pchan->fcs;
1790 chan->max_tx = pchan->max_tx;
1791 chan->tx_win = pchan->tx_win;
1792 chan->tx_win_max = pchan->tx_win_max;
1793 chan->sec_level = pchan->sec_level;
1794 chan->flags = pchan->flags;
1795 chan->tx_credits = pchan->tx_credits;
1796 chan->rx_credits = pchan->rx_credits;
1798 if (chan->chan_type == L2CAP_CHAN_FIXED) {
1799 chan->scid = pchan->scid;
1800 chan->dcid = pchan->scid;
1803 security_sk_clone(parent, sk);
1805 switch (sk->sk_type) {
1807 chan->chan_type = L2CAP_CHAN_RAW;
1810 chan->chan_type = L2CAP_CHAN_CONN_LESS;
1811 bt_sk(sk)->skb_msg_name = l2cap_skb_msg_name;
1813 case SOCK_SEQPACKET:
1815 chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
1819 chan->imtu = L2CAP_DEFAULT_MTU;
1821 if (!disable_ertm && sk->sk_type == SOCK_STREAM) {
1822 chan->mode = L2CAP_MODE_ERTM;
1823 set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
1825 chan->mode = L2CAP_MODE_BASIC;
1828 l2cap_chan_set_defaults(chan);
1831 /* Default config options */
1832 chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
1835 chan->ops = &l2cap_chan_ops;
1838 static struct proto l2cap_proto = {
1840 .owner = THIS_MODULE,
1841 .obj_size = sizeof(struct l2cap_pinfo)
1844 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
1845 int proto, gfp_t prio, int kern)
1848 struct l2cap_chan *chan;
1850 sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto, kern);
1854 sock_init_data(sock, sk);
1855 INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1857 sk->sk_destruct = l2cap_sock_destruct;
1858 sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
1860 sock_reset_flag(sk, SOCK_ZAPPED);
1862 sk->sk_protocol = proto;
1863 sk->sk_state = BT_OPEN;
1865 chan = l2cap_chan_create();
1871 l2cap_chan_hold(chan);
1873 l2cap_pi(sk)->chan = chan;
1878 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1883 BT_DBG("sock %p", sock);
1885 sock->state = SS_UNCONNECTED;
1887 if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1888 sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1889 return -ESOCKTNOSUPPORT;
1891 if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1894 sock->ops = &l2cap_sock_ops;
1896 sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern);
1900 l2cap_sock_init(sk, NULL);
1901 bt_sock_link(&l2cap_sk_list, sk);
1905 static const struct proto_ops l2cap_sock_ops = {
1906 .family = PF_BLUETOOTH,
1907 .owner = THIS_MODULE,
1908 .release = l2cap_sock_release,
1909 .bind = l2cap_sock_bind,
1910 .connect = l2cap_sock_connect,
1911 .listen = l2cap_sock_listen,
1912 .accept = l2cap_sock_accept,
1913 .getname = l2cap_sock_getname,
1914 .sendmsg = l2cap_sock_sendmsg,
1915 .recvmsg = l2cap_sock_recvmsg,
1916 .poll = bt_sock_poll,
1917 .ioctl = bt_sock_ioctl,
1918 .gettstamp = sock_gettstamp,
1919 .mmap = sock_no_mmap,
1920 .socketpair = sock_no_socketpair,
1921 .shutdown = l2cap_sock_shutdown,
1922 .setsockopt = l2cap_sock_setsockopt,
1923 .getsockopt = l2cap_sock_getsockopt
1926 static const struct net_proto_family l2cap_sock_family_ops = {
1927 .family = PF_BLUETOOTH,
1928 .owner = THIS_MODULE,
1929 .create = l2cap_sock_create,
1932 int __init l2cap_init_sockets(void)
1936 BUILD_BUG_ON(sizeof(struct sockaddr_l2) > sizeof(struct sockaddr));
1938 err = proto_register(&l2cap_proto, 0);
1942 err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1944 BT_ERR("L2CAP socket registration failed");
1948 err = bt_procfs_init(&init_net, "l2cap", &l2cap_sk_list,
1951 BT_ERR("Failed to create L2CAP proc file");
1952 bt_sock_unregister(BTPROTO_L2CAP);
1956 BT_INFO("L2CAP socket layer initialized");
1961 proto_unregister(&l2cap_proto);
1965 void l2cap_cleanup_sockets(void)
1967 bt_procfs_cleanup(&init_net, "l2cap");
1968 bt_sock_unregister(BTPROTO_L2CAP);
1969 proto_unregister(&l2cap_proto);