• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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
7 
8    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
9 
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;
13 
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.
22 
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.
26 */
27 
28 /* Bluetooth L2CAP sockets. */
29 
30 #include <linux/module.h>
31 #include <linux/export.h>
32 #include <linux/sched/signal.h>
33 
34 #include <net/bluetooth/bluetooth.h>
35 #include <net/bluetooth/hci_core.h>
36 #include <net/bluetooth/l2cap.h>
37 
38 #include "smp.h"
39 
40 static struct bt_sock_list l2cap_sk_list = {
41 	.lock = __RW_LOCK_UNLOCKED(l2cap_sk_list.lock)
42 };
43 
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);
48 static void l2cap_sock_cleanup_listen(struct sock *parent);
49 
l2cap_is_socket(struct socket * sock)50 bool l2cap_is_socket(struct socket *sock)
51 {
52 	return sock && sock->ops == &l2cap_sock_ops;
53 }
54 EXPORT_SYMBOL(l2cap_is_socket);
55 
l2cap_validate_bredr_psm(u16 psm)56 static int l2cap_validate_bredr_psm(u16 psm)
57 {
58 	/* PSM must be odd and lsb of upper byte must be 0 */
59 	if ((psm & 0x0101) != 0x0001)
60 		return -EINVAL;
61 
62 	/* Restrict usage of well-known PSMs */
63 	if (psm < L2CAP_PSM_DYN_START && !capable(CAP_NET_BIND_SERVICE))
64 		return -EACCES;
65 
66 	return 0;
67 }
68 
l2cap_validate_le_psm(u16 psm)69 static int l2cap_validate_le_psm(u16 psm)
70 {
71 	/* Valid LE_PSM ranges are defined only until 0x00ff */
72 	if (psm > L2CAP_PSM_LE_DYN_END)
73 		return -EINVAL;
74 
75 	/* Restrict fixed, SIG assigned PSM values to CAP_NET_BIND_SERVICE */
76 	if (psm < L2CAP_PSM_LE_DYN_START && !capable(CAP_NET_BIND_SERVICE))
77 		return -EACCES;
78 
79 	return 0;
80 }
81 
l2cap_sock_bind(struct socket * sock,struct sockaddr * addr,int alen)82 static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
83 {
84 	struct sock *sk = sock->sk;
85 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
86 	struct sockaddr_l2 la;
87 	int len, err = 0;
88 
89 	BT_DBG("sk %p", sk);
90 
91 	if (!addr || alen < offsetofend(struct sockaddr, sa_family) ||
92 	    addr->sa_family != AF_BLUETOOTH)
93 		return -EINVAL;
94 
95 	memset(&la, 0, sizeof(la));
96 	len = min_t(unsigned int, sizeof(la), alen);
97 	memcpy(&la, addr, len);
98 
99 	if (la.l2_cid && la.l2_psm)
100 		return -EINVAL;
101 
102 	if (!bdaddr_type_is_valid(la.l2_bdaddr_type))
103 		return -EINVAL;
104 
105 	if (bdaddr_type_is_le(la.l2_bdaddr_type)) {
106 		/* We only allow ATT user space socket */
107 		if (la.l2_cid &&
108 		    la.l2_cid != cpu_to_le16(L2CAP_CID_ATT))
109 			return -EINVAL;
110 	}
111 
112 	lock_sock(sk);
113 
114 	if (sk->sk_state != BT_OPEN) {
115 		err = -EBADFD;
116 		goto done;
117 	}
118 
119 	if (la.l2_psm) {
120 		__u16 psm = __le16_to_cpu(la.l2_psm);
121 
122 		if (la.l2_bdaddr_type == BDADDR_BREDR)
123 			err = l2cap_validate_bredr_psm(psm);
124 		else
125 			err = l2cap_validate_le_psm(psm);
126 
127 		if (err)
128 			goto done;
129 	}
130 
131 	bacpy(&chan->src, &la.l2_bdaddr);
132 	chan->src_type = la.l2_bdaddr_type;
133 
134 	if (la.l2_cid)
135 		err = l2cap_add_scid(chan, __le16_to_cpu(la.l2_cid));
136 	else
137 		err = l2cap_add_psm(chan, &la.l2_bdaddr, la.l2_psm);
138 
139 	if (err < 0)
140 		goto done;
141 
142 	switch (chan->chan_type) {
143 	case L2CAP_CHAN_CONN_LESS:
144 		if (__le16_to_cpu(la.l2_psm) == L2CAP_PSM_3DSP)
145 			chan->sec_level = BT_SECURITY_SDP;
146 		break;
147 	case L2CAP_CHAN_CONN_ORIENTED:
148 		if (__le16_to_cpu(la.l2_psm) == L2CAP_PSM_SDP ||
149 		    __le16_to_cpu(la.l2_psm) == L2CAP_PSM_RFCOMM)
150 			chan->sec_level = BT_SECURITY_SDP;
151 		break;
152 	case L2CAP_CHAN_RAW:
153 		chan->sec_level = BT_SECURITY_SDP;
154 		break;
155 	case L2CAP_CHAN_FIXED:
156 		/* Fixed channels default to the L2CAP core not holding a
157 		 * hci_conn reference for them. For fixed channels mapping to
158 		 * L2CAP sockets we do want to hold a reference so set the
159 		 * appropriate flag to request it.
160 		 */
161 		set_bit(FLAG_HOLD_HCI_CONN, &chan->flags);
162 		break;
163 	}
164 
165 	/* Use L2CAP_MODE_LE_FLOWCTL (CoC) in case of LE address and
166 	 * L2CAP_MODE_EXT_FLOWCTL (ECRED) has not been set.
167 	 */
168 	if (chan->psm && bdaddr_type_is_le(chan->src_type) &&
169 	    chan->mode != L2CAP_MODE_EXT_FLOWCTL)
170 		chan->mode = L2CAP_MODE_LE_FLOWCTL;
171 
172 	chan->state = BT_BOUND;
173 	sk->sk_state = BT_BOUND;
174 
175 done:
176 	release_sock(sk);
177 	return err;
178 }
179 
l2cap_sock_init_pid(struct sock * sk)180 static void l2cap_sock_init_pid(struct sock *sk)
181 {
182 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
183 
184 	/* Only L2CAP_MODE_EXT_FLOWCTL ever need to access the PID in order to
185 	 * group the channels being requested.
186 	 */
187 	if (chan->mode != L2CAP_MODE_EXT_FLOWCTL)
188 		return;
189 
190 	spin_lock(&sk->sk_peer_lock);
191 	sk->sk_peer_pid = get_pid(task_tgid(current));
192 	spin_unlock(&sk->sk_peer_lock);
193 }
194 
l2cap_sock_connect(struct socket * sock,struct sockaddr * addr,int alen,int flags)195 static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr,
196 			      int alen, int flags)
197 {
198 	struct sock *sk = sock->sk;
199 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
200 	struct sockaddr_l2 la;
201 	int len, err = 0;
202 	bool zapped;
203 
204 	BT_DBG("sk %p", sk);
205 
206 	lock_sock(sk);
207 	zapped = sock_flag(sk, SOCK_ZAPPED);
208 	release_sock(sk);
209 
210 	if (zapped)
211 		return -EINVAL;
212 
213 	if (!addr || alen < offsetofend(struct sockaddr, sa_family) ||
214 	    addr->sa_family != AF_BLUETOOTH)
215 		return -EINVAL;
216 
217 	memset(&la, 0, sizeof(la));
218 	len = min_t(unsigned int, sizeof(la), alen);
219 	memcpy(&la, addr, len);
220 
221 	if (la.l2_cid && la.l2_psm)
222 		return -EINVAL;
223 
224 	if (!bdaddr_type_is_valid(la.l2_bdaddr_type))
225 		return -EINVAL;
226 
227 	/* Check that the socket wasn't bound to something that
228 	 * conflicts with the address given to connect(). If chan->src
229 	 * is BDADDR_ANY it means bind() was never used, in which case
230 	 * chan->src_type and la.l2_bdaddr_type do not need to match.
231 	 */
232 	if (chan->src_type == BDADDR_BREDR && bacmp(&chan->src, BDADDR_ANY) &&
233 	    bdaddr_type_is_le(la.l2_bdaddr_type)) {
234 		/* Old user space versions will try to incorrectly bind
235 		 * the ATT socket using BDADDR_BREDR. We need to accept
236 		 * this and fix up the source address type only when
237 		 * both the source CID and destination CID indicate
238 		 * ATT. Anything else is an invalid combination.
239 		 */
240 		if (chan->scid != L2CAP_CID_ATT ||
241 		    la.l2_cid != cpu_to_le16(L2CAP_CID_ATT))
242 			return -EINVAL;
243 
244 		/* We don't have the hdev available here to make a
245 		 * better decision on random vs public, but since all
246 		 * user space versions that exhibit this issue anyway do
247 		 * not support random local addresses assuming public
248 		 * here is good enough.
249 		 */
250 		chan->src_type = BDADDR_LE_PUBLIC;
251 	}
252 
253 	if (chan->src_type != BDADDR_BREDR && la.l2_bdaddr_type == BDADDR_BREDR)
254 		return -EINVAL;
255 
256 	if (bdaddr_type_is_le(la.l2_bdaddr_type)) {
257 		/* We only allow ATT user space socket */
258 		if (la.l2_cid &&
259 		    la.l2_cid != cpu_to_le16(L2CAP_CID_ATT))
260 			return -EINVAL;
261 	}
262 
263 	/* Use L2CAP_MODE_LE_FLOWCTL (CoC) in case of LE address and
264 	 * L2CAP_MODE_EXT_FLOWCTL (ECRED) has not been set.
265 	 */
266 	if (chan->psm && bdaddr_type_is_le(chan->src_type) &&
267 	    chan->mode != L2CAP_MODE_EXT_FLOWCTL)
268 		chan->mode = L2CAP_MODE_LE_FLOWCTL;
269 
270 	l2cap_sock_init_pid(sk);
271 
272 	err = l2cap_chan_connect(chan, la.l2_psm, __le16_to_cpu(la.l2_cid),
273 				 &la.l2_bdaddr, la.l2_bdaddr_type);
274 	if (err)
275 		return err;
276 
277 	lock_sock(sk);
278 
279 	err = bt_sock_wait_state(sk, BT_CONNECTED,
280 				 sock_sndtimeo(sk, flags & O_NONBLOCK));
281 
282 	release_sock(sk);
283 
284 	return err;
285 }
286 
l2cap_sock_listen(struct socket * sock,int backlog)287 static int l2cap_sock_listen(struct socket *sock, int backlog)
288 {
289 	struct sock *sk = sock->sk;
290 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
291 	int err = 0;
292 
293 	BT_DBG("sk %p backlog %d", sk, backlog);
294 
295 	lock_sock(sk);
296 
297 	if (sk->sk_state != BT_BOUND) {
298 		err = -EBADFD;
299 		goto done;
300 	}
301 
302 	if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM) {
303 		err = -EINVAL;
304 		goto done;
305 	}
306 
307 	switch (chan->mode) {
308 	case L2CAP_MODE_BASIC:
309 	case L2CAP_MODE_LE_FLOWCTL:
310 		break;
311 	case L2CAP_MODE_EXT_FLOWCTL:
312 		if (!enable_ecred) {
313 			err = -EOPNOTSUPP;
314 			goto done;
315 		}
316 		break;
317 	case L2CAP_MODE_ERTM:
318 	case L2CAP_MODE_STREAMING:
319 		if (!disable_ertm)
320 			break;
321 		fallthrough;
322 	default:
323 		err = -EOPNOTSUPP;
324 		goto done;
325 	}
326 
327 	l2cap_sock_init_pid(sk);
328 
329 	sk->sk_max_ack_backlog = backlog;
330 	sk->sk_ack_backlog = 0;
331 
332 	/* Listening channels need to use nested locking in order not to
333 	 * cause lockdep warnings when the created child channels end up
334 	 * being locked in the same thread as the parent channel.
335 	 */
336 	atomic_set(&chan->nesting, L2CAP_NESTING_PARENT);
337 
338 	chan->state = BT_LISTEN;
339 	sk->sk_state = BT_LISTEN;
340 
341 done:
342 	release_sock(sk);
343 	return err;
344 }
345 
l2cap_sock_accept(struct socket * sock,struct socket * newsock,int flags,bool kern)346 static int l2cap_sock_accept(struct socket *sock, struct socket *newsock,
347 			     int flags, bool kern)
348 {
349 	DEFINE_WAIT_FUNC(wait, woken_wake_function);
350 	struct sock *sk = sock->sk, *nsk;
351 	long timeo;
352 	int err = 0;
353 
354 	lock_sock_nested(sk, L2CAP_NESTING_PARENT);
355 
356 	timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
357 
358 	BT_DBG("sk %p timeo %ld", sk, timeo);
359 
360 	/* Wait for an incoming connection. (wake-one). */
361 	add_wait_queue_exclusive(sk_sleep(sk), &wait);
362 	while (1) {
363 		if (sk->sk_state != BT_LISTEN) {
364 			err = -EBADFD;
365 			break;
366 		}
367 
368 		nsk = bt_accept_dequeue(sk, newsock);
369 		if (nsk)
370 			break;
371 
372 		if (!timeo) {
373 			err = -EAGAIN;
374 			break;
375 		}
376 
377 		if (signal_pending(current)) {
378 			err = sock_intr_errno(timeo);
379 			break;
380 		}
381 
382 		release_sock(sk);
383 
384 		timeo = wait_woken(&wait, TASK_INTERRUPTIBLE, timeo);
385 
386 		lock_sock_nested(sk, L2CAP_NESTING_PARENT);
387 	}
388 	remove_wait_queue(sk_sleep(sk), &wait);
389 
390 	if (err)
391 		goto done;
392 
393 	newsock->state = SS_CONNECTED;
394 
395 	BT_DBG("new socket %p", nsk);
396 
397 done:
398 	release_sock(sk);
399 	return err;
400 }
401 
l2cap_sock_getname(struct socket * sock,struct sockaddr * addr,int peer)402 static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr,
403 			      int peer)
404 {
405 	struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
406 	struct sock *sk = sock->sk;
407 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
408 
409 	BT_DBG("sock %p, sk %p", sock, sk);
410 
411 	if (peer && sk->sk_state != BT_CONNECTED &&
412 	    sk->sk_state != BT_CONNECT && sk->sk_state != BT_CONNECT2 &&
413 	    sk->sk_state != BT_CONFIG)
414 		return -ENOTCONN;
415 
416 	memset(la, 0, sizeof(struct sockaddr_l2));
417 	addr->sa_family = AF_BLUETOOTH;
418 
419 	la->l2_psm = chan->psm;
420 
421 	if (peer) {
422 		bacpy(&la->l2_bdaddr, &chan->dst);
423 		la->l2_cid = cpu_to_le16(chan->dcid);
424 		la->l2_bdaddr_type = chan->dst_type;
425 	} else {
426 		bacpy(&la->l2_bdaddr, &chan->src);
427 		la->l2_cid = cpu_to_le16(chan->scid);
428 		la->l2_bdaddr_type = chan->src_type;
429 	}
430 
431 	return sizeof(struct sockaddr_l2);
432 }
433 
l2cap_get_mode(struct l2cap_chan * chan)434 static int l2cap_get_mode(struct l2cap_chan *chan)
435 {
436 	switch (chan->mode) {
437 	case L2CAP_MODE_BASIC:
438 		return BT_MODE_BASIC;
439 	case L2CAP_MODE_ERTM:
440 		return BT_MODE_ERTM;
441 	case L2CAP_MODE_STREAMING:
442 		return BT_MODE_STREAMING;
443 	case L2CAP_MODE_LE_FLOWCTL:
444 		return BT_MODE_LE_FLOWCTL;
445 	case L2CAP_MODE_EXT_FLOWCTL:
446 		return BT_MODE_EXT_FLOWCTL;
447 	}
448 
449 	return -EINVAL;
450 }
451 
l2cap_sock_getsockopt_old(struct socket * sock,int optname,char __user * optval,int __user * optlen)452 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname,
453 				     char __user *optval, int __user *optlen)
454 {
455 	struct sock *sk = sock->sk;
456 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
457 	struct l2cap_options opts;
458 	struct l2cap_conninfo cinfo;
459 	int len, err = 0;
460 	u32 opt;
461 
462 	BT_DBG("sk %p", sk);
463 
464 	if (get_user(len, optlen))
465 		return -EFAULT;
466 
467 	lock_sock(sk);
468 
469 	switch (optname) {
470 	case L2CAP_OPTIONS:
471 		/* LE sockets should use BT_SNDMTU/BT_RCVMTU, but since
472 		 * legacy ATT code depends on getsockopt for
473 		 * L2CAP_OPTIONS we need to let this pass.
474 		 */
475 		if (bdaddr_type_is_le(chan->src_type) &&
476 		    chan->scid != L2CAP_CID_ATT) {
477 			err = -EINVAL;
478 			break;
479 		}
480 
481 		/* Only BR/EDR modes are supported here */
482 		switch (chan->mode) {
483 		case L2CAP_MODE_BASIC:
484 		case L2CAP_MODE_ERTM:
485 		case L2CAP_MODE_STREAMING:
486 			break;
487 		default:
488 			err = -EINVAL;
489 			break;
490 		}
491 
492 		if (err < 0)
493 			break;
494 
495 		memset(&opts, 0, sizeof(opts));
496 		opts.imtu     = chan->imtu;
497 		opts.omtu     = chan->omtu;
498 		opts.flush_to = chan->flush_to;
499 		opts.mode     = chan->mode;
500 		opts.fcs      = chan->fcs;
501 		opts.max_tx   = chan->max_tx;
502 		opts.txwin_size = chan->tx_win;
503 
504 		BT_DBG("mode 0x%2.2x", chan->mode);
505 
506 		len = min_t(unsigned int, len, sizeof(opts));
507 		if (copy_to_user(optval, (char *) &opts, len))
508 			err = -EFAULT;
509 
510 		break;
511 
512 	case L2CAP_LM:
513 		switch (chan->sec_level) {
514 		case BT_SECURITY_LOW:
515 			opt = L2CAP_LM_AUTH;
516 			break;
517 		case BT_SECURITY_MEDIUM:
518 			opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
519 			break;
520 		case BT_SECURITY_HIGH:
521 			opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
522 			      L2CAP_LM_SECURE;
523 			break;
524 		case BT_SECURITY_FIPS:
525 			opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
526 			      L2CAP_LM_SECURE | L2CAP_LM_FIPS;
527 			break;
528 		default:
529 			opt = 0;
530 			break;
531 		}
532 
533 		if (test_bit(FLAG_ROLE_SWITCH, &chan->flags))
534 			opt |= L2CAP_LM_MASTER;
535 
536 		if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags))
537 			opt |= L2CAP_LM_RELIABLE;
538 
539 		if (put_user(opt, (u32 __user *) optval))
540 			err = -EFAULT;
541 
542 		break;
543 
544 	case L2CAP_CONNINFO:
545 		if (sk->sk_state != BT_CONNECTED &&
546 		    !(sk->sk_state == BT_CONNECT2 &&
547 		      test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))) {
548 			err = -ENOTCONN;
549 			break;
550 		}
551 
552 		memset(&cinfo, 0, sizeof(cinfo));
553 		cinfo.hci_handle = chan->conn->hcon->handle;
554 		memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3);
555 
556 		len = min_t(unsigned int, len, sizeof(cinfo));
557 		if (copy_to_user(optval, (char *) &cinfo, len))
558 			err = -EFAULT;
559 
560 		break;
561 
562 	default:
563 		err = -ENOPROTOOPT;
564 		break;
565 	}
566 
567 	release_sock(sk);
568 	return err;
569 }
570 
l2cap_sock_getsockopt(struct socket * sock,int level,int optname,char __user * optval,int __user * optlen)571 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname,
572 				 char __user *optval, int __user *optlen)
573 {
574 	struct sock *sk = sock->sk;
575 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
576 	struct bt_security sec;
577 	struct bt_power pwr;
578 	u32 phys;
579 	int len, mode, err = 0;
580 
581 	BT_DBG("sk %p", sk);
582 
583 	if (level == SOL_L2CAP)
584 		return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
585 
586 	if (level != SOL_BLUETOOTH)
587 		return -ENOPROTOOPT;
588 
589 	if (get_user(len, optlen))
590 		return -EFAULT;
591 
592 	lock_sock(sk);
593 
594 	switch (optname) {
595 	case BT_SECURITY:
596 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
597 		    chan->chan_type != L2CAP_CHAN_FIXED &&
598 		    chan->chan_type != L2CAP_CHAN_RAW) {
599 			err = -EINVAL;
600 			break;
601 		}
602 
603 		memset(&sec, 0, sizeof(sec));
604 		if (chan->conn) {
605 			sec.level = chan->conn->hcon->sec_level;
606 
607 			if (sk->sk_state == BT_CONNECTED)
608 				sec.key_size = chan->conn->hcon->enc_key_size;
609 		} else {
610 			sec.level = chan->sec_level;
611 		}
612 
613 		len = min_t(unsigned int, len, sizeof(sec));
614 		if (copy_to_user(optval, (char *) &sec, len))
615 			err = -EFAULT;
616 
617 		break;
618 
619 	case BT_DEFER_SETUP:
620 		if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
621 			err = -EINVAL;
622 			break;
623 		}
624 
625 		if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags),
626 			     (u32 __user *) optval))
627 			err = -EFAULT;
628 
629 		break;
630 
631 	case BT_FLUSHABLE:
632 		if (put_user(test_bit(FLAG_FLUSHABLE, &chan->flags),
633 			     (u32 __user *) optval))
634 			err = -EFAULT;
635 
636 		break;
637 
638 	case BT_POWER:
639 		if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM
640 		    && sk->sk_type != SOCK_RAW) {
641 			err = -EINVAL;
642 			break;
643 		}
644 
645 		pwr.force_active = test_bit(FLAG_FORCE_ACTIVE, &chan->flags);
646 
647 		len = min_t(unsigned int, len, sizeof(pwr));
648 		if (copy_to_user(optval, (char *) &pwr, len))
649 			err = -EFAULT;
650 
651 		break;
652 
653 	case BT_CHANNEL_POLICY:
654 		if (put_user(chan->chan_policy, (u32 __user *) optval))
655 			err = -EFAULT;
656 		break;
657 
658 	case BT_SNDMTU:
659 		if (!bdaddr_type_is_le(chan->src_type)) {
660 			err = -EINVAL;
661 			break;
662 		}
663 
664 		if (sk->sk_state != BT_CONNECTED) {
665 			err = -ENOTCONN;
666 			break;
667 		}
668 
669 		if (put_user(chan->omtu, (u16 __user *) optval))
670 			err = -EFAULT;
671 		break;
672 
673 	case BT_RCVMTU:
674 		if (!bdaddr_type_is_le(chan->src_type)) {
675 			err = -EINVAL;
676 			break;
677 		}
678 
679 		if (put_user(chan->imtu, (u16 __user *) optval))
680 			err = -EFAULT;
681 		break;
682 
683 	case BT_PHY:
684 		if (sk->sk_state != BT_CONNECTED) {
685 			err = -ENOTCONN;
686 			break;
687 		}
688 
689 		phys = hci_conn_get_phy(chan->conn->hcon);
690 
691 		if (put_user(phys, (u32 __user *) optval))
692 			err = -EFAULT;
693 		break;
694 
695 	case BT_MODE:
696 		if (!enable_ecred) {
697 			err = -ENOPROTOOPT;
698 			break;
699 		}
700 
701 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) {
702 			err = -EINVAL;
703 			break;
704 		}
705 
706 		mode = l2cap_get_mode(chan);
707 		if (mode < 0) {
708 			err = mode;
709 			break;
710 		}
711 
712 		if (put_user(mode, (u8 __user *) optval))
713 			err = -EFAULT;
714 		break;
715 
716 	default:
717 		err = -ENOPROTOOPT;
718 		break;
719 	}
720 
721 	release_sock(sk);
722 	return err;
723 }
724 
l2cap_valid_mtu(struct l2cap_chan * chan,u16 mtu)725 static bool l2cap_valid_mtu(struct l2cap_chan *chan, u16 mtu)
726 {
727 	switch (chan->scid) {
728 	case L2CAP_CID_ATT:
729 		if (mtu < L2CAP_LE_MIN_MTU)
730 			return false;
731 		break;
732 
733 	default:
734 		if (mtu < L2CAP_DEFAULT_MIN_MTU)
735 			return false;
736 	}
737 
738 	return true;
739 }
740 
l2cap_sock_setsockopt_old(struct socket * sock,int optname,sockptr_t optval,unsigned int optlen)741 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
742 				     sockptr_t optval, unsigned int optlen)
743 {
744 	struct sock *sk = sock->sk;
745 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
746 	struct l2cap_options opts;
747 	int len, err = 0;
748 	u32 opt;
749 
750 	BT_DBG("sk %p", sk);
751 
752 	lock_sock(sk);
753 
754 	switch (optname) {
755 	case L2CAP_OPTIONS:
756 		if (bdaddr_type_is_le(chan->src_type)) {
757 			err = -EINVAL;
758 			break;
759 		}
760 
761 		if (sk->sk_state == BT_CONNECTED) {
762 			err = -EINVAL;
763 			break;
764 		}
765 
766 		opts.imtu     = chan->imtu;
767 		opts.omtu     = chan->omtu;
768 		opts.flush_to = chan->flush_to;
769 		opts.mode     = chan->mode;
770 		opts.fcs      = chan->fcs;
771 		opts.max_tx   = chan->max_tx;
772 		opts.txwin_size = chan->tx_win;
773 
774 		len = min_t(unsigned int, sizeof(opts), optlen);
775 		if (copy_from_sockptr(&opts, optval, len)) {
776 			err = -EFAULT;
777 			break;
778 		}
779 
780 		if (opts.txwin_size > L2CAP_DEFAULT_EXT_WINDOW) {
781 			err = -EINVAL;
782 			break;
783 		}
784 
785 		if (!l2cap_valid_mtu(chan, opts.imtu)) {
786 			err = -EINVAL;
787 			break;
788 		}
789 
790 		/* Only BR/EDR modes are supported here */
791 		switch (opts.mode) {
792 		case L2CAP_MODE_BASIC:
793 			clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
794 			break;
795 		case L2CAP_MODE_ERTM:
796 		case L2CAP_MODE_STREAMING:
797 			if (!disable_ertm)
798 				break;
799 			fallthrough;
800 		default:
801 			err = -EINVAL;
802 			break;
803 		}
804 
805 		if (err < 0)
806 			break;
807 
808 		chan->mode = opts.mode;
809 
810 		BT_DBG("mode 0x%2.2x", chan->mode);
811 
812 		chan->imtu = opts.imtu;
813 		chan->omtu = opts.omtu;
814 		chan->fcs  = opts.fcs;
815 		chan->max_tx = opts.max_tx;
816 		chan->tx_win = opts.txwin_size;
817 		chan->flush_to = opts.flush_to;
818 		break;
819 
820 	case L2CAP_LM:
821 		if (copy_from_sockptr(&opt, optval, sizeof(u32))) {
822 			err = -EFAULT;
823 			break;
824 		}
825 
826 		if (opt & L2CAP_LM_FIPS) {
827 			err = -EINVAL;
828 			break;
829 		}
830 
831 		if (opt & L2CAP_LM_AUTH)
832 			chan->sec_level = BT_SECURITY_LOW;
833 		if (opt & L2CAP_LM_ENCRYPT)
834 			chan->sec_level = BT_SECURITY_MEDIUM;
835 		if (opt & L2CAP_LM_SECURE)
836 			chan->sec_level = BT_SECURITY_HIGH;
837 
838 		if (opt & L2CAP_LM_MASTER)
839 			set_bit(FLAG_ROLE_SWITCH, &chan->flags);
840 		else
841 			clear_bit(FLAG_ROLE_SWITCH, &chan->flags);
842 
843 		if (opt & L2CAP_LM_RELIABLE)
844 			set_bit(FLAG_FORCE_RELIABLE, &chan->flags);
845 		else
846 			clear_bit(FLAG_FORCE_RELIABLE, &chan->flags);
847 		break;
848 
849 	default:
850 		err = -ENOPROTOOPT;
851 		break;
852 	}
853 
854 	release_sock(sk);
855 	return err;
856 }
857 
l2cap_set_mode(struct l2cap_chan * chan,u8 mode)858 static int l2cap_set_mode(struct l2cap_chan *chan, u8 mode)
859 {
860 	switch (mode) {
861 	case BT_MODE_BASIC:
862 		if (bdaddr_type_is_le(chan->src_type))
863 			return -EINVAL;
864 		mode = L2CAP_MODE_BASIC;
865 		clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
866 		break;
867 	case BT_MODE_ERTM:
868 		if (!disable_ertm || bdaddr_type_is_le(chan->src_type))
869 			return -EINVAL;
870 		mode = L2CAP_MODE_ERTM;
871 		break;
872 	case BT_MODE_STREAMING:
873 		if (!disable_ertm || bdaddr_type_is_le(chan->src_type))
874 			return -EINVAL;
875 		mode = L2CAP_MODE_STREAMING;
876 		break;
877 	case BT_MODE_LE_FLOWCTL:
878 		if (!bdaddr_type_is_le(chan->src_type))
879 			return -EINVAL;
880 		mode = L2CAP_MODE_LE_FLOWCTL;
881 		break;
882 	case BT_MODE_EXT_FLOWCTL:
883 		/* TODO: Add support for ECRED PDUs to BR/EDR */
884 		if (!bdaddr_type_is_le(chan->src_type))
885 			return -EINVAL;
886 		mode = L2CAP_MODE_EXT_FLOWCTL;
887 		break;
888 	default:
889 		return -EINVAL;
890 	}
891 
892 	chan->mode = mode;
893 
894 	return 0;
895 }
896 
l2cap_sock_setsockopt(struct socket * sock,int level,int optname,sockptr_t optval,unsigned int optlen)897 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
898 				 sockptr_t optval, unsigned int optlen)
899 {
900 	struct sock *sk = sock->sk;
901 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
902 	struct bt_security sec;
903 	struct bt_power pwr;
904 	struct l2cap_conn *conn;
905 	int len, err = 0;
906 	u32 opt;
907 	u16 mtu;
908 	u8 mode;
909 
910 	BT_DBG("sk %p", sk);
911 
912 	if (level == SOL_L2CAP)
913 		return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
914 
915 	if (level != SOL_BLUETOOTH)
916 		return -ENOPROTOOPT;
917 
918 	lock_sock(sk);
919 
920 	switch (optname) {
921 	case BT_SECURITY:
922 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
923 		    chan->chan_type != L2CAP_CHAN_FIXED &&
924 		    chan->chan_type != L2CAP_CHAN_RAW) {
925 			err = -EINVAL;
926 			break;
927 		}
928 
929 		sec.level = BT_SECURITY_LOW;
930 
931 		len = min_t(unsigned int, sizeof(sec), optlen);
932 		if (copy_from_sockptr(&sec, optval, len)) {
933 			err = -EFAULT;
934 			break;
935 		}
936 
937 		if (sec.level < BT_SECURITY_LOW ||
938 		    sec.level > BT_SECURITY_FIPS) {
939 			err = -EINVAL;
940 			break;
941 		}
942 
943 		chan->sec_level = sec.level;
944 
945 		if (!chan->conn)
946 			break;
947 
948 		conn = chan->conn;
949 
950 		/* change security for LE channels */
951 		if (chan->scid == L2CAP_CID_ATT) {
952 			if (smp_conn_security(conn->hcon, sec.level)) {
953 				err = -EINVAL;
954 				break;
955 			}
956 
957 			set_bit(FLAG_PENDING_SECURITY, &chan->flags);
958 			sk->sk_state = BT_CONFIG;
959 			chan->state = BT_CONFIG;
960 
961 		/* or for ACL link */
962 		} else if ((sk->sk_state == BT_CONNECT2 &&
963 			    test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) ||
964 			   sk->sk_state == BT_CONNECTED) {
965 			if (!l2cap_chan_check_security(chan, true))
966 				set_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
967 			else
968 				sk->sk_state_change(sk);
969 		} else {
970 			err = -EINVAL;
971 		}
972 		break;
973 
974 	case BT_DEFER_SETUP:
975 		if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
976 			err = -EINVAL;
977 			break;
978 		}
979 
980 		if (copy_from_sockptr(&opt, optval, sizeof(u32))) {
981 			err = -EFAULT;
982 			break;
983 		}
984 
985 		if (opt) {
986 			set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
987 			set_bit(FLAG_DEFER_SETUP, &chan->flags);
988 		} else {
989 			clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
990 			clear_bit(FLAG_DEFER_SETUP, &chan->flags);
991 		}
992 		break;
993 
994 	case BT_FLUSHABLE:
995 		if (copy_from_sockptr(&opt, optval, sizeof(u32))) {
996 			err = -EFAULT;
997 			break;
998 		}
999 
1000 		if (opt > BT_FLUSHABLE_ON) {
1001 			err = -EINVAL;
1002 			break;
1003 		}
1004 
1005 		if (opt == BT_FLUSHABLE_OFF) {
1006 			conn = chan->conn;
1007 			/* proceed further only when we have l2cap_conn and
1008 			   No Flush support in the LM */
1009 			if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
1010 				err = -EINVAL;
1011 				break;
1012 			}
1013 		}
1014 
1015 		if (opt)
1016 			set_bit(FLAG_FLUSHABLE, &chan->flags);
1017 		else
1018 			clear_bit(FLAG_FLUSHABLE, &chan->flags);
1019 		break;
1020 
1021 	case BT_POWER:
1022 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
1023 		    chan->chan_type != L2CAP_CHAN_RAW) {
1024 			err = -EINVAL;
1025 			break;
1026 		}
1027 
1028 		pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
1029 
1030 		len = min_t(unsigned int, sizeof(pwr), optlen);
1031 		if (copy_from_sockptr(&pwr, optval, len)) {
1032 			err = -EFAULT;
1033 			break;
1034 		}
1035 
1036 		if (pwr.force_active)
1037 			set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
1038 		else
1039 			clear_bit(FLAG_FORCE_ACTIVE, &chan->flags);
1040 		break;
1041 
1042 	case BT_CHANNEL_POLICY:
1043 		if (copy_from_sockptr(&opt, optval, sizeof(u32))) {
1044 			err = -EFAULT;
1045 			break;
1046 		}
1047 
1048 		if (opt > BT_CHANNEL_POLICY_AMP_PREFERRED) {
1049 			err = -EINVAL;
1050 			break;
1051 		}
1052 
1053 		if (chan->mode != L2CAP_MODE_ERTM &&
1054 		    chan->mode != L2CAP_MODE_STREAMING) {
1055 			err = -EOPNOTSUPP;
1056 			break;
1057 		}
1058 
1059 		chan->chan_policy = (u8) opt;
1060 
1061 		if (sk->sk_state == BT_CONNECTED &&
1062 		    chan->move_role == L2CAP_MOVE_ROLE_NONE)
1063 			l2cap_move_start(chan);
1064 
1065 		break;
1066 
1067 	case BT_SNDMTU:
1068 		if (!bdaddr_type_is_le(chan->src_type)) {
1069 			err = -EINVAL;
1070 			break;
1071 		}
1072 
1073 		/* Setting is not supported as it's the remote side that
1074 		 * decides this.
1075 		 */
1076 		err = -EPERM;
1077 		break;
1078 
1079 	case BT_RCVMTU:
1080 		if (!bdaddr_type_is_le(chan->src_type)) {
1081 			err = -EINVAL;
1082 			break;
1083 		}
1084 
1085 		if (chan->mode == L2CAP_MODE_LE_FLOWCTL &&
1086 		    sk->sk_state == BT_CONNECTED) {
1087 			err = -EISCONN;
1088 			break;
1089 		}
1090 
1091 		if (copy_from_sockptr(&mtu, optval, sizeof(u16))) {
1092 			err = -EFAULT;
1093 			break;
1094 		}
1095 
1096 		if (chan->mode == L2CAP_MODE_EXT_FLOWCTL &&
1097 		    sk->sk_state == BT_CONNECTED)
1098 			err = l2cap_chan_reconfigure(chan, mtu);
1099 		else
1100 			chan->imtu = mtu;
1101 
1102 		break;
1103 
1104 	case BT_MODE:
1105 		if (!enable_ecred) {
1106 			err = -ENOPROTOOPT;
1107 			break;
1108 		}
1109 
1110 		BT_DBG("sk->sk_state %u", sk->sk_state);
1111 
1112 		if (sk->sk_state != BT_BOUND) {
1113 			err = -EINVAL;
1114 			break;
1115 		}
1116 
1117 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) {
1118 			err = -EINVAL;
1119 			break;
1120 		}
1121 
1122 		if (copy_from_sockptr(&mode, optval, sizeof(u8))) {
1123 			err = -EFAULT;
1124 			break;
1125 		}
1126 
1127 		BT_DBG("mode %u", mode);
1128 
1129 		err = l2cap_set_mode(chan, mode);
1130 		if (err)
1131 			break;
1132 
1133 		BT_DBG("mode 0x%2.2x", chan->mode);
1134 
1135 		break;
1136 
1137 	default:
1138 		err = -ENOPROTOOPT;
1139 		break;
1140 	}
1141 
1142 	release_sock(sk);
1143 	return err;
1144 }
1145 
l2cap_sock_sendmsg(struct socket * sock,struct msghdr * msg,size_t len)1146 static int l2cap_sock_sendmsg(struct socket *sock, struct msghdr *msg,
1147 			      size_t len)
1148 {
1149 	struct sock *sk = sock->sk;
1150 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
1151 	int err;
1152 
1153 	BT_DBG("sock %p, sk %p", sock, sk);
1154 
1155 	err = sock_error(sk);
1156 	if (err)
1157 		return err;
1158 
1159 	if (msg->msg_flags & MSG_OOB)
1160 		return -EOPNOTSUPP;
1161 
1162 	if (sk->sk_state != BT_CONNECTED)
1163 		return -ENOTCONN;
1164 
1165 	lock_sock(sk);
1166 	err = bt_sock_wait_ready(sk, msg->msg_flags);
1167 	release_sock(sk);
1168 	if (err)
1169 		return err;
1170 
1171 	l2cap_chan_lock(chan);
1172 	err = l2cap_chan_send(chan, msg, len);
1173 	l2cap_chan_unlock(chan);
1174 
1175 	return err;
1176 }
1177 
l2cap_sock_recvmsg(struct socket * sock,struct msghdr * msg,size_t len,int flags)1178 static int l2cap_sock_recvmsg(struct socket *sock, struct msghdr *msg,
1179 			      size_t len, int flags)
1180 {
1181 	struct sock *sk = sock->sk;
1182 	struct l2cap_pinfo *pi = l2cap_pi(sk);
1183 	int err;
1184 
1185 	lock_sock(sk);
1186 
1187 	if (sk->sk_state == BT_CONNECT2 && test_bit(BT_SK_DEFER_SETUP,
1188 						    &bt_sk(sk)->flags)) {
1189 		if (pi->chan->mode == L2CAP_MODE_EXT_FLOWCTL) {
1190 			sk->sk_state = BT_CONNECTED;
1191 			pi->chan->state = BT_CONNECTED;
1192 			__l2cap_ecred_conn_rsp_defer(pi->chan);
1193 		} else if (bdaddr_type_is_le(pi->chan->src_type)) {
1194 			sk->sk_state = BT_CONNECTED;
1195 			pi->chan->state = BT_CONNECTED;
1196 			__l2cap_le_connect_rsp_defer(pi->chan);
1197 		} else {
1198 			sk->sk_state = BT_CONFIG;
1199 			pi->chan->state = BT_CONFIG;
1200 			__l2cap_connect_rsp_defer(pi->chan);
1201 		}
1202 
1203 		err = 0;
1204 		goto done;
1205 	}
1206 
1207 	release_sock(sk);
1208 
1209 	if (sock->type == SOCK_STREAM)
1210 		err = bt_sock_stream_recvmsg(sock, msg, len, flags);
1211 	else
1212 		err = bt_sock_recvmsg(sock, msg, len, flags);
1213 
1214 	if (pi->chan->mode != L2CAP_MODE_ERTM)
1215 		return err;
1216 
1217 	/* Attempt to put pending rx data in the socket buffer */
1218 
1219 	lock_sock(sk);
1220 
1221 	if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state))
1222 		goto done;
1223 
1224 	if (pi->rx_busy_skb) {
1225 		if (!__sock_queue_rcv_skb(sk, pi->rx_busy_skb))
1226 			pi->rx_busy_skb = NULL;
1227 		else
1228 			goto done;
1229 	}
1230 
1231 	/* Restore data flow when half of the receive buffer is
1232 	 * available.  This avoids resending large numbers of
1233 	 * frames.
1234 	 */
1235 	if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf >> 1)
1236 		l2cap_chan_busy(pi->chan, 0);
1237 
1238 done:
1239 	release_sock(sk);
1240 	return err;
1241 }
1242 
1243 /* Kill socket (only if zapped and orphan)
1244  * Must be called on unlocked socket, with l2cap channel lock.
1245  */
l2cap_sock_kill(struct sock * sk)1246 static void l2cap_sock_kill(struct sock *sk)
1247 {
1248 	if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
1249 		return;
1250 
1251 	BT_DBG("sk %p state %s", sk, state_to_string(sk->sk_state));
1252 
1253 	/* Kill poor orphan */
1254 
1255 	l2cap_chan_put(l2cap_pi(sk)->chan);
1256 	sock_set_flag(sk, SOCK_DEAD);
1257 	sock_put(sk);
1258 }
1259 
__l2cap_wait_ack(struct sock * sk,struct l2cap_chan * chan)1260 static int __l2cap_wait_ack(struct sock *sk, struct l2cap_chan *chan)
1261 {
1262 	DECLARE_WAITQUEUE(wait, current);
1263 	int err = 0;
1264 	int timeo = L2CAP_WAIT_ACK_POLL_PERIOD;
1265 	/* Timeout to prevent infinite loop */
1266 	unsigned long timeout = jiffies + L2CAP_WAIT_ACK_TIMEOUT;
1267 
1268 	add_wait_queue(sk_sleep(sk), &wait);
1269 	set_current_state(TASK_INTERRUPTIBLE);
1270 	do {
1271 		BT_DBG("Waiting for %d ACKs, timeout %04d ms",
1272 		       chan->unacked_frames, time_after(jiffies, timeout) ? 0 :
1273 		       jiffies_to_msecs(timeout - jiffies));
1274 
1275 		if (!timeo)
1276 			timeo = L2CAP_WAIT_ACK_POLL_PERIOD;
1277 
1278 		if (signal_pending(current)) {
1279 			err = sock_intr_errno(timeo);
1280 			break;
1281 		}
1282 
1283 		release_sock(sk);
1284 		timeo = schedule_timeout(timeo);
1285 		lock_sock(sk);
1286 		set_current_state(TASK_INTERRUPTIBLE);
1287 
1288 		err = sock_error(sk);
1289 		if (err)
1290 			break;
1291 
1292 		if (time_after(jiffies, timeout)) {
1293 			err = -ENOLINK;
1294 			break;
1295 		}
1296 
1297 	} while (chan->unacked_frames > 0 &&
1298 		 chan->state == BT_CONNECTED);
1299 
1300 	set_current_state(TASK_RUNNING);
1301 	remove_wait_queue(sk_sleep(sk), &wait);
1302 	return err;
1303 }
1304 
l2cap_sock_shutdown(struct socket * sock,int how)1305 static int l2cap_sock_shutdown(struct socket *sock, int how)
1306 {
1307 	struct sock *sk = sock->sk;
1308 	struct l2cap_chan *chan;
1309 	struct l2cap_conn *conn;
1310 	int err = 0;
1311 
1312 	BT_DBG("sock %p, sk %p, how %d", sock, sk, how);
1313 
1314 	/* 'how' parameter is mapped to sk_shutdown as follows:
1315 	 * SHUT_RD   (0) --> RCV_SHUTDOWN  (1)
1316 	 * SHUT_WR   (1) --> SEND_SHUTDOWN (2)
1317 	 * SHUT_RDWR (2) --> SHUTDOWN_MASK (3)
1318 	 */
1319 	how++;
1320 
1321 	if (!sk)
1322 		return 0;
1323 
1324 	lock_sock(sk);
1325 
1326 	if ((sk->sk_shutdown & how) == how)
1327 		goto shutdown_already;
1328 
1329 	BT_DBG("Handling sock shutdown");
1330 
1331 	/* prevent sk structure from being freed whilst unlocked */
1332 	sock_hold(sk);
1333 
1334 	chan = l2cap_pi(sk)->chan;
1335 	/* prevent chan structure from being freed whilst unlocked */
1336 	l2cap_chan_hold(chan);
1337 
1338 	BT_DBG("chan %p state %s", chan, state_to_string(chan->state));
1339 
1340 	if (chan->mode == L2CAP_MODE_ERTM &&
1341 	    chan->unacked_frames > 0 &&
1342 	    chan->state == BT_CONNECTED) {
1343 		err = __l2cap_wait_ack(sk, chan);
1344 
1345 		/* After waiting for ACKs, check whether shutdown
1346 		 * has already been actioned to close the L2CAP
1347 		 * link such as by l2cap_disconnection_req().
1348 		 */
1349 		if ((sk->sk_shutdown & how) == how)
1350 			goto shutdown_matched;
1351 	}
1352 
1353 	/* Try setting the RCV_SHUTDOWN bit, return early if SEND_SHUTDOWN
1354 	 * is already set
1355 	 */
1356 	if ((how & RCV_SHUTDOWN) && !(sk->sk_shutdown & RCV_SHUTDOWN)) {
1357 		sk->sk_shutdown |= RCV_SHUTDOWN;
1358 		if ((sk->sk_shutdown & how) == how)
1359 			goto shutdown_matched;
1360 	}
1361 
1362 	sk->sk_shutdown |= SEND_SHUTDOWN;
1363 	release_sock(sk);
1364 
1365 	l2cap_chan_lock(chan);
1366 	conn = chan->conn;
1367 	if (conn)
1368 		/* prevent conn structure from being freed */
1369 		l2cap_conn_get(conn);
1370 	l2cap_chan_unlock(chan);
1371 
1372 	if (conn)
1373 		/* mutex lock must be taken before l2cap_chan_lock() */
1374 		mutex_lock(&conn->chan_lock);
1375 
1376 	l2cap_chan_lock(chan);
1377 	l2cap_chan_close(chan, 0);
1378 	l2cap_chan_unlock(chan);
1379 
1380 	if (conn) {
1381 		mutex_unlock(&conn->chan_lock);
1382 		l2cap_conn_put(conn);
1383 	}
1384 
1385 	lock_sock(sk);
1386 
1387 	if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
1388 	    !(current->flags & PF_EXITING))
1389 		err = bt_sock_wait_state(sk, BT_CLOSED,
1390 					 sk->sk_lingertime);
1391 
1392 shutdown_matched:
1393 	l2cap_chan_put(chan);
1394 	sock_put(sk);
1395 
1396 shutdown_already:
1397 	if (!err && sk->sk_err)
1398 		err = -sk->sk_err;
1399 
1400 	release_sock(sk);
1401 
1402 	BT_DBG("Sock shutdown complete err: %d", err);
1403 
1404 	return err;
1405 }
1406 
l2cap_sock_release(struct socket * sock)1407 static int l2cap_sock_release(struct socket *sock)
1408 {
1409 	struct sock *sk = sock->sk;
1410 	int err;
1411 	struct l2cap_chan *chan;
1412 
1413 	BT_DBG("sock %p, sk %p", sock, sk);
1414 
1415 	if (!sk)
1416 		return 0;
1417 
1418 	l2cap_sock_cleanup_listen(sk);
1419 	bt_sock_unlink(&l2cap_sk_list, sk);
1420 
1421 	err = l2cap_sock_shutdown(sock, SHUT_RDWR);
1422 	chan = l2cap_pi(sk)->chan;
1423 
1424 	l2cap_chan_hold(chan);
1425 	l2cap_chan_lock(chan);
1426 
1427 	sock_orphan(sk);
1428 	l2cap_sock_kill(sk);
1429 
1430 	l2cap_chan_unlock(chan);
1431 	l2cap_chan_put(chan);
1432 
1433 	return err;
1434 }
1435 
l2cap_sock_cleanup_listen(struct sock * parent)1436 static void l2cap_sock_cleanup_listen(struct sock *parent)
1437 {
1438 	struct sock *sk;
1439 
1440 	BT_DBG("parent %p state %s", parent,
1441 	       state_to_string(parent->sk_state));
1442 
1443 	/* Close not yet accepted channels */
1444 	while ((sk = bt_accept_dequeue(parent, NULL))) {
1445 		struct l2cap_chan *chan = l2cap_pi(sk)->chan;
1446 
1447 		BT_DBG("child chan %p state %s", chan,
1448 		       state_to_string(chan->state));
1449 
1450 		l2cap_chan_hold(chan);
1451 		l2cap_chan_lock(chan);
1452 
1453 		__clear_chan_timer(chan);
1454 		l2cap_chan_close(chan, ECONNRESET);
1455 		l2cap_sock_kill(sk);
1456 
1457 		l2cap_chan_unlock(chan);
1458 		l2cap_chan_put(chan);
1459 	}
1460 }
1461 
l2cap_sock_new_connection_cb(struct l2cap_chan * chan)1462 static struct l2cap_chan *l2cap_sock_new_connection_cb(struct l2cap_chan *chan)
1463 {
1464 	struct sock *sk, *parent = chan->data;
1465 
1466 	lock_sock(parent);
1467 
1468 	/* Check for backlog size */
1469 	if (sk_acceptq_is_full(parent)) {
1470 		BT_DBG("backlog full %d", parent->sk_ack_backlog);
1471 		release_sock(parent);
1472 		return NULL;
1473 	}
1474 
1475 	sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
1476 			      GFP_ATOMIC, 0);
1477 	if (!sk) {
1478 		release_sock(parent);
1479 		return NULL;
1480         }
1481 
1482 	bt_sock_reclassify_lock(sk, BTPROTO_L2CAP);
1483 
1484 	l2cap_sock_init(sk, parent);
1485 
1486 	bt_accept_enqueue(parent, sk, false);
1487 
1488 	release_sock(parent);
1489 
1490 	return l2cap_pi(sk)->chan;
1491 }
1492 
l2cap_sock_recv_cb(struct l2cap_chan * chan,struct sk_buff * skb)1493 static int l2cap_sock_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb)
1494 {
1495 	struct sock *sk = chan->data;
1496 	int err;
1497 
1498 	lock_sock(sk);
1499 
1500 	if (l2cap_pi(sk)->rx_busy_skb) {
1501 		err = -ENOMEM;
1502 		goto done;
1503 	}
1504 
1505 	if (chan->mode != L2CAP_MODE_ERTM &&
1506 	    chan->mode != L2CAP_MODE_STREAMING) {
1507 		/* Even if no filter is attached, we could potentially
1508 		 * get errors from security modules, etc.
1509 		 */
1510 		err = sk_filter(sk, skb);
1511 		if (err)
1512 			goto done;
1513 	}
1514 
1515 	err = __sock_queue_rcv_skb(sk, skb);
1516 
1517 	/* For ERTM, handle one skb that doesn't fit into the recv
1518 	 * buffer.  This is important to do because the data frames
1519 	 * have already been acked, so the skb cannot be discarded.
1520 	 *
1521 	 * Notify the l2cap core that the buffer is full, so the
1522 	 * LOCAL_BUSY state is entered and no more frames are
1523 	 * acked and reassembled until there is buffer space
1524 	 * available.
1525 	 */
1526 	if (err < 0 && chan->mode == L2CAP_MODE_ERTM) {
1527 		l2cap_pi(sk)->rx_busy_skb = skb;
1528 		l2cap_chan_busy(chan, 1);
1529 		err = 0;
1530 	}
1531 
1532 done:
1533 	release_sock(sk);
1534 
1535 	return err;
1536 }
1537 
l2cap_sock_close_cb(struct l2cap_chan * chan)1538 static void l2cap_sock_close_cb(struct l2cap_chan *chan)
1539 {
1540 	struct sock *sk = chan->data;
1541 
1542 	if (!sk)
1543 		return;
1544 
1545 	l2cap_sock_kill(sk);
1546 }
1547 
l2cap_sock_teardown_cb(struct l2cap_chan * chan,int err)1548 static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
1549 {
1550 	struct sock *sk = chan->data;
1551 	struct sock *parent;
1552 
1553 	if (!sk)
1554 		return;
1555 
1556 	BT_DBG("chan %p state %s", chan, state_to_string(chan->state));
1557 
1558 	/* This callback can be called both for server (BT_LISTEN)
1559 	 * sockets as well as "normal" ones. To avoid lockdep warnings
1560 	 * with child socket locking (through l2cap_sock_cleanup_listen)
1561 	 * we need separation into separate nesting levels. The simplest
1562 	 * way to accomplish this is to inherit the nesting level used
1563 	 * for the channel.
1564 	 */
1565 	lock_sock_nested(sk, atomic_read(&chan->nesting));
1566 
1567 	parent = bt_sk(sk)->parent;
1568 
1569 	switch (chan->state) {
1570 	case BT_OPEN:
1571 	case BT_BOUND:
1572 	case BT_CLOSED:
1573 		break;
1574 	case BT_LISTEN:
1575 		l2cap_sock_cleanup_listen(sk);
1576 		sk->sk_state = BT_CLOSED;
1577 		chan->state = BT_CLOSED;
1578 
1579 		break;
1580 	default:
1581 		sk->sk_state = BT_CLOSED;
1582 		chan->state = BT_CLOSED;
1583 
1584 		sk->sk_err = err;
1585 
1586 		if (parent) {
1587 			bt_accept_unlink(sk);
1588 			parent->sk_data_ready(parent);
1589 		} else {
1590 			sk->sk_state_change(sk);
1591 		}
1592 
1593 		break;
1594 	}
1595 	release_sock(sk);
1596 
1597 	/* Only zap after cleanup to avoid use after free race */
1598 	sock_set_flag(sk, SOCK_ZAPPED);
1599 
1600 }
1601 
l2cap_sock_state_change_cb(struct l2cap_chan * chan,int state,int err)1602 static void l2cap_sock_state_change_cb(struct l2cap_chan *chan, int state,
1603 				       int err)
1604 {
1605 	struct sock *sk = chan->data;
1606 
1607 	sk->sk_state = state;
1608 
1609 	if (err)
1610 		sk->sk_err = err;
1611 }
1612 
l2cap_sock_alloc_skb_cb(struct l2cap_chan * chan,unsigned long hdr_len,unsigned long len,int nb)1613 static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan,
1614 					       unsigned long hdr_len,
1615 					       unsigned long len, int nb)
1616 {
1617 	struct sock *sk = chan->data;
1618 	struct sk_buff *skb;
1619 	int err;
1620 
1621 	l2cap_chan_unlock(chan);
1622 	skb = bt_skb_send_alloc(sk, hdr_len + len, nb, &err);
1623 	l2cap_chan_lock(chan);
1624 
1625 	if (!skb)
1626 		return ERR_PTR(err);
1627 
1628 	/* Channel lock is released before requesting new skb and then
1629 	 * reacquired thus we need to recheck channel state.
1630 	 */
1631 	if (chan->state != BT_CONNECTED) {
1632 		kfree_skb(skb);
1633 		return ERR_PTR(-ENOTCONN);
1634 	}
1635 
1636 	skb->priority = sk->sk_priority;
1637 
1638 	bt_cb(skb)->l2cap.chan = chan;
1639 
1640 	return skb;
1641 }
1642 
l2cap_sock_ready_cb(struct l2cap_chan * chan)1643 static void l2cap_sock_ready_cb(struct l2cap_chan *chan)
1644 {
1645 	struct sock *sk = chan->data;
1646 	struct sock *parent;
1647 
1648 	lock_sock(sk);
1649 
1650 	parent = bt_sk(sk)->parent;
1651 
1652 	BT_DBG("sk %p, parent %p", sk, parent);
1653 
1654 	sk->sk_state = BT_CONNECTED;
1655 	sk->sk_state_change(sk);
1656 
1657 	if (parent)
1658 		parent->sk_data_ready(parent);
1659 
1660 	release_sock(sk);
1661 }
1662 
l2cap_sock_defer_cb(struct l2cap_chan * chan)1663 static void l2cap_sock_defer_cb(struct l2cap_chan *chan)
1664 {
1665 	struct sock *parent, *sk = chan->data;
1666 
1667 	lock_sock(sk);
1668 
1669 	parent = bt_sk(sk)->parent;
1670 	if (parent)
1671 		parent->sk_data_ready(parent);
1672 
1673 	release_sock(sk);
1674 }
1675 
l2cap_sock_resume_cb(struct l2cap_chan * chan)1676 static void l2cap_sock_resume_cb(struct l2cap_chan *chan)
1677 {
1678 	struct sock *sk = chan->data;
1679 
1680 	if (test_and_clear_bit(FLAG_PENDING_SECURITY, &chan->flags)) {
1681 		sk->sk_state = BT_CONNECTED;
1682 		chan->state = BT_CONNECTED;
1683 	}
1684 
1685 	clear_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
1686 	sk->sk_state_change(sk);
1687 }
1688 
l2cap_sock_set_shutdown_cb(struct l2cap_chan * chan)1689 static void l2cap_sock_set_shutdown_cb(struct l2cap_chan *chan)
1690 {
1691 	struct sock *sk = chan->data;
1692 
1693 	lock_sock(sk);
1694 	sk->sk_shutdown = SHUTDOWN_MASK;
1695 	release_sock(sk);
1696 }
1697 
l2cap_sock_get_sndtimeo_cb(struct l2cap_chan * chan)1698 static long l2cap_sock_get_sndtimeo_cb(struct l2cap_chan *chan)
1699 {
1700 	struct sock *sk = chan->data;
1701 
1702 	return sk->sk_sndtimeo;
1703 }
1704 
l2cap_sock_get_peer_pid_cb(struct l2cap_chan * chan)1705 static struct pid *l2cap_sock_get_peer_pid_cb(struct l2cap_chan *chan)
1706 {
1707 	struct sock *sk = chan->data;
1708 
1709 	return sk->sk_peer_pid;
1710 }
1711 
l2cap_sock_suspend_cb(struct l2cap_chan * chan)1712 static void l2cap_sock_suspend_cb(struct l2cap_chan *chan)
1713 {
1714 	struct sock *sk = chan->data;
1715 
1716 	set_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
1717 	sk->sk_state_change(sk);
1718 }
1719 
l2cap_sock_filter(struct l2cap_chan * chan,struct sk_buff * skb)1720 static int l2cap_sock_filter(struct l2cap_chan *chan, struct sk_buff *skb)
1721 {
1722 	struct sock *sk = chan->data;
1723 
1724 	switch (chan->mode) {
1725 	case L2CAP_MODE_ERTM:
1726 	case L2CAP_MODE_STREAMING:
1727 		return sk_filter(sk, skb);
1728 	}
1729 
1730 	return 0;
1731 }
1732 
1733 static const struct l2cap_ops l2cap_chan_ops = {
1734 	.name			= "L2CAP Socket Interface",
1735 	.new_connection		= l2cap_sock_new_connection_cb,
1736 	.recv			= l2cap_sock_recv_cb,
1737 	.close			= l2cap_sock_close_cb,
1738 	.teardown		= l2cap_sock_teardown_cb,
1739 	.state_change		= l2cap_sock_state_change_cb,
1740 	.ready			= l2cap_sock_ready_cb,
1741 	.defer			= l2cap_sock_defer_cb,
1742 	.resume			= l2cap_sock_resume_cb,
1743 	.suspend		= l2cap_sock_suspend_cb,
1744 	.set_shutdown		= l2cap_sock_set_shutdown_cb,
1745 	.get_sndtimeo		= l2cap_sock_get_sndtimeo_cb,
1746 	.get_peer_pid		= l2cap_sock_get_peer_pid_cb,
1747 	.alloc_skb		= l2cap_sock_alloc_skb_cb,
1748 	.filter			= l2cap_sock_filter,
1749 };
1750 
l2cap_sock_destruct(struct sock * sk)1751 static void l2cap_sock_destruct(struct sock *sk)
1752 {
1753 	BT_DBG("sk %p", sk);
1754 
1755 	if (l2cap_pi(sk)->chan) {
1756 		l2cap_pi(sk)->chan->data = NULL;
1757 		l2cap_chan_put(l2cap_pi(sk)->chan);
1758 	}
1759 
1760 	if (l2cap_pi(sk)->rx_busy_skb) {
1761 		kfree_skb(l2cap_pi(sk)->rx_busy_skb);
1762 		l2cap_pi(sk)->rx_busy_skb = NULL;
1763 	}
1764 
1765 	skb_queue_purge(&sk->sk_receive_queue);
1766 	skb_queue_purge(&sk->sk_write_queue);
1767 }
1768 
l2cap_skb_msg_name(struct sk_buff * skb,void * msg_name,int * msg_namelen)1769 static void l2cap_skb_msg_name(struct sk_buff *skb, void *msg_name,
1770 			       int *msg_namelen)
1771 {
1772 	DECLARE_SOCKADDR(struct sockaddr_l2 *, la, msg_name);
1773 
1774 	memset(la, 0, sizeof(struct sockaddr_l2));
1775 	la->l2_family = AF_BLUETOOTH;
1776 	la->l2_psm = bt_cb(skb)->l2cap.psm;
1777 	bacpy(&la->l2_bdaddr, &bt_cb(skb)->l2cap.bdaddr);
1778 
1779 	*msg_namelen = sizeof(struct sockaddr_l2);
1780 }
1781 
l2cap_sock_init(struct sock * sk,struct sock * parent)1782 static void l2cap_sock_init(struct sock *sk, struct sock *parent)
1783 {
1784 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
1785 
1786 	BT_DBG("sk %p", sk);
1787 
1788 	if (parent) {
1789 		struct l2cap_chan *pchan = l2cap_pi(parent)->chan;
1790 
1791 		sk->sk_type = parent->sk_type;
1792 		bt_sk(sk)->flags = bt_sk(parent)->flags;
1793 
1794 		chan->chan_type = pchan->chan_type;
1795 		chan->imtu = pchan->imtu;
1796 		chan->omtu = pchan->omtu;
1797 		chan->conf_state = pchan->conf_state;
1798 		chan->mode = pchan->mode;
1799 		chan->fcs  = pchan->fcs;
1800 		chan->max_tx = pchan->max_tx;
1801 		chan->tx_win = pchan->tx_win;
1802 		chan->tx_win_max = pchan->tx_win_max;
1803 		chan->sec_level = pchan->sec_level;
1804 		chan->flags = pchan->flags;
1805 		chan->tx_credits = pchan->tx_credits;
1806 		chan->rx_credits = pchan->rx_credits;
1807 
1808 		if (chan->chan_type == L2CAP_CHAN_FIXED) {
1809 			chan->scid = pchan->scid;
1810 			chan->dcid = pchan->scid;
1811 		}
1812 
1813 		security_sk_clone(parent, sk);
1814 	} else {
1815 		switch (sk->sk_type) {
1816 		case SOCK_RAW:
1817 			chan->chan_type = L2CAP_CHAN_RAW;
1818 			break;
1819 		case SOCK_DGRAM:
1820 			chan->chan_type = L2CAP_CHAN_CONN_LESS;
1821 			bt_sk(sk)->skb_msg_name = l2cap_skb_msg_name;
1822 			break;
1823 		case SOCK_SEQPACKET:
1824 		case SOCK_STREAM:
1825 			chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
1826 			break;
1827 		}
1828 
1829 		chan->imtu = L2CAP_DEFAULT_MTU;
1830 		chan->omtu = 0;
1831 		if (!disable_ertm && sk->sk_type == SOCK_STREAM) {
1832 			chan->mode = L2CAP_MODE_ERTM;
1833 			set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
1834 		} else {
1835 			chan->mode = L2CAP_MODE_BASIC;
1836 		}
1837 
1838 		l2cap_chan_set_defaults(chan);
1839 	}
1840 
1841 	/* Default config options */
1842 	chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
1843 
1844 	chan->data = sk;
1845 	chan->ops = &l2cap_chan_ops;
1846 }
1847 
1848 static struct proto l2cap_proto = {
1849 	.name		= "L2CAP",
1850 	.owner		= THIS_MODULE,
1851 	.obj_size	= sizeof(struct l2cap_pinfo)
1852 };
1853 
l2cap_sock_alloc(struct net * net,struct socket * sock,int proto,gfp_t prio,int kern)1854 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
1855 				     int proto, gfp_t prio, int kern)
1856 {
1857 	struct sock *sk;
1858 	struct l2cap_chan *chan;
1859 
1860 	sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto, kern);
1861 	if (!sk)
1862 		return NULL;
1863 
1864 	sock_init_data(sock, sk);
1865 	INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1866 
1867 	sk->sk_destruct = l2cap_sock_destruct;
1868 	sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
1869 
1870 	sock_reset_flag(sk, SOCK_ZAPPED);
1871 
1872 	sk->sk_protocol = proto;
1873 	sk->sk_state = BT_OPEN;
1874 
1875 	chan = l2cap_chan_create();
1876 	if (!chan) {
1877 		sk_free(sk);
1878 		return NULL;
1879 	}
1880 
1881 	l2cap_chan_hold(chan);
1882 
1883 	l2cap_pi(sk)->chan = chan;
1884 
1885 	return sk;
1886 }
1887 
l2cap_sock_create(struct net * net,struct socket * sock,int protocol,int kern)1888 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1889 			     int kern)
1890 {
1891 	struct sock *sk;
1892 
1893 	BT_DBG("sock %p", sock);
1894 
1895 	sock->state = SS_UNCONNECTED;
1896 
1897 	if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1898 	    sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1899 		return -ESOCKTNOSUPPORT;
1900 
1901 	if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1902 		return -EPERM;
1903 
1904 	sock->ops = &l2cap_sock_ops;
1905 
1906 	sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern);
1907 	if (!sk)
1908 		return -ENOMEM;
1909 
1910 	l2cap_sock_init(sk, NULL);
1911 	bt_sock_link(&l2cap_sk_list, sk);
1912 	return 0;
1913 }
1914 
1915 static const struct proto_ops l2cap_sock_ops = {
1916 	.family		= PF_BLUETOOTH,
1917 	.owner		= THIS_MODULE,
1918 	.release	= l2cap_sock_release,
1919 	.bind		= l2cap_sock_bind,
1920 	.connect	= l2cap_sock_connect,
1921 	.listen		= l2cap_sock_listen,
1922 	.accept		= l2cap_sock_accept,
1923 	.getname	= l2cap_sock_getname,
1924 	.sendmsg	= l2cap_sock_sendmsg,
1925 	.recvmsg	= l2cap_sock_recvmsg,
1926 	.poll		= bt_sock_poll,
1927 	.ioctl		= bt_sock_ioctl,
1928 	.gettstamp	= sock_gettstamp,
1929 	.mmap		= sock_no_mmap,
1930 	.socketpair	= sock_no_socketpair,
1931 	.shutdown	= l2cap_sock_shutdown,
1932 	.setsockopt	= l2cap_sock_setsockopt,
1933 	.getsockopt	= l2cap_sock_getsockopt
1934 };
1935 
1936 static const struct net_proto_family l2cap_sock_family_ops = {
1937 	.family	= PF_BLUETOOTH,
1938 	.owner	= THIS_MODULE,
1939 	.create	= l2cap_sock_create,
1940 };
1941 
l2cap_init_sockets(void)1942 int __init l2cap_init_sockets(void)
1943 {
1944 	int err;
1945 
1946 	BUILD_BUG_ON(sizeof(struct sockaddr_l2) > sizeof(struct sockaddr));
1947 
1948 	err = proto_register(&l2cap_proto, 0);
1949 	if (err < 0)
1950 		return err;
1951 
1952 	err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1953 	if (err < 0) {
1954 		BT_ERR("L2CAP socket registration failed");
1955 		goto error;
1956 	}
1957 
1958 	err = bt_procfs_init(&init_net, "l2cap", &l2cap_sk_list,
1959 			     NULL);
1960 	if (err < 0) {
1961 		BT_ERR("Failed to create L2CAP proc file");
1962 		bt_sock_unregister(BTPROTO_L2CAP);
1963 		goto error;
1964 	}
1965 
1966 	BT_INFO("L2CAP socket layer initialized");
1967 
1968 	return 0;
1969 
1970 error:
1971 	proto_unregister(&l2cap_proto);
1972 	return err;
1973 }
1974 
l2cap_cleanup_sockets(void)1975 void l2cap_cleanup_sockets(void)
1976 {
1977 	bt_procfs_cleanup(&init_net, "l2cap");
1978 	bt_sock_unregister(BTPROTO_L2CAP);
1979 	proto_unregister(&l2cap_proto);
1980 }
1981