xref: /openbmc/linux/net/bluetooth/l2cap_sock.c (revision 9033894722ec595053c92bfa4359b37e7bc91b78)
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/security.h>
31 #include <linux/export.h>
32 
33 #include <net/bluetooth/bluetooth.h>
34 #include <net/bluetooth/hci_core.h>
35 #include <net/bluetooth/l2cap.h>
36 #include <net/bluetooth/smp.h>
37 
38 static const struct proto_ops l2cap_sock_ops;
39 static void l2cap_sock_init(struct sock *sk, struct sock *parent);
40 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio);
41 
42 static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
43 {
44 	struct sock *sk = sock->sk;
45 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
46 	struct sockaddr_l2 la;
47 	int len, err = 0;
48 
49 	BT_DBG("sk %p", sk);
50 
51 	if (!addr || addr->sa_family != AF_BLUETOOTH)
52 		return -EINVAL;
53 
54 	memset(&la, 0, sizeof(la));
55 	len = min_t(unsigned int, sizeof(la), alen);
56 	memcpy(&la, addr, len);
57 
58 	if (la.l2_cid && la.l2_psm)
59 		return -EINVAL;
60 
61 	lock_sock(sk);
62 
63 	if (sk->sk_state != BT_OPEN) {
64 		err = -EBADFD;
65 		goto done;
66 	}
67 
68 	if (la.l2_psm) {
69 		__u16 psm = __le16_to_cpu(la.l2_psm);
70 
71 		/* PSM must be odd and lsb of upper byte must be 0 */
72 		if ((psm & 0x0101) != 0x0001) {
73 			err = -EINVAL;
74 			goto done;
75 		}
76 
77 		/* Restrict usage of well-known PSMs */
78 		if (psm < 0x1001 && !capable(CAP_NET_BIND_SERVICE)) {
79 			err = -EACCES;
80 			goto done;
81 		}
82 	}
83 
84 	if (la.l2_cid)
85 		err = l2cap_add_scid(chan, __le16_to_cpu(la.l2_cid));
86 	else
87 		err = l2cap_add_psm(chan, &la.l2_bdaddr, la.l2_psm);
88 
89 	if (err < 0)
90 		goto done;
91 
92 	if (__le16_to_cpu(la.l2_psm) == 0x0001 ||
93 				__le16_to_cpu(la.l2_psm) == 0x0003)
94 		chan->sec_level = BT_SECURITY_SDP;
95 
96 	bacpy(&bt_sk(sk)->src, &la.l2_bdaddr);
97 
98 	chan->state = BT_BOUND;
99 	sk->sk_state = BT_BOUND;
100 
101 done:
102 	release_sock(sk);
103 	return err;
104 }
105 
106 static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
107 {
108 	struct sock *sk = sock->sk;
109 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
110 	struct sockaddr_l2 la;
111 	int len, err = 0;
112 
113 	BT_DBG("sk %p", sk);
114 
115 	if (!addr || alen < sizeof(addr->sa_family) ||
116 	    addr->sa_family != AF_BLUETOOTH)
117 		return -EINVAL;
118 
119 	memset(&la, 0, sizeof(la));
120 	len = min_t(unsigned int, sizeof(la), alen);
121 	memcpy(&la, addr, len);
122 
123 	if (la.l2_cid && la.l2_psm)
124 		return -EINVAL;
125 
126 	err = l2cap_chan_connect(chan, la.l2_psm, __le16_to_cpu(la.l2_cid),
127 				&la.l2_bdaddr);
128 	if (err)
129 		return err;
130 
131 	lock_sock(sk);
132 
133 	err = bt_sock_wait_state(sk, BT_CONNECTED,
134 			sock_sndtimeo(sk, flags & O_NONBLOCK));
135 
136 	release_sock(sk);
137 
138 	return err;
139 }
140 
141 static int l2cap_sock_listen(struct socket *sock, int backlog)
142 {
143 	struct sock *sk = sock->sk;
144 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
145 	int err = 0;
146 
147 	BT_DBG("sk %p backlog %d", sk, backlog);
148 
149 	lock_sock(sk);
150 
151 	if ((sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM)
152 			|| sk->sk_state != BT_BOUND) {
153 		err = -EBADFD;
154 		goto done;
155 	}
156 
157 	switch (chan->mode) {
158 	case L2CAP_MODE_BASIC:
159 		break;
160 	case L2CAP_MODE_ERTM:
161 	case L2CAP_MODE_STREAMING:
162 		if (!disable_ertm)
163 			break;
164 		/* fall through */
165 	default:
166 		err = -ENOTSUPP;
167 		goto done;
168 	}
169 
170 	sk->sk_max_ack_backlog = backlog;
171 	sk->sk_ack_backlog = 0;
172 
173 	chan->state = BT_LISTEN;
174 	sk->sk_state = BT_LISTEN;
175 
176 done:
177 	release_sock(sk);
178 	return err;
179 }
180 
181 static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags)
182 {
183 	DECLARE_WAITQUEUE(wait, current);
184 	struct sock *sk = sock->sk, *nsk;
185 	long timeo;
186 	int err = 0;
187 
188 	lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
189 
190 	timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
191 
192 	BT_DBG("sk %p timeo %ld", sk, timeo);
193 
194 	/* Wait for an incoming connection. (wake-one). */
195 	add_wait_queue_exclusive(sk_sleep(sk), &wait);
196 	while (1) {
197 		set_current_state(TASK_INTERRUPTIBLE);
198 
199 		if (sk->sk_state != BT_LISTEN) {
200 			err = -EBADFD;
201 			break;
202 		}
203 
204 		nsk = bt_accept_dequeue(sk, newsock);
205 		if (nsk)
206 			break;
207 
208 		if (!timeo) {
209 			err = -EAGAIN;
210 			break;
211 		}
212 
213 		if (signal_pending(current)) {
214 			err = sock_intr_errno(timeo);
215 			break;
216 		}
217 
218 		release_sock(sk);
219 		timeo = schedule_timeout(timeo);
220 		lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
221 	}
222 	__set_current_state(TASK_RUNNING);
223 	remove_wait_queue(sk_sleep(sk), &wait);
224 
225 	if (err)
226 		goto done;
227 
228 	newsock->state = SS_CONNECTED;
229 
230 	BT_DBG("new socket %p", nsk);
231 
232 done:
233 	release_sock(sk);
234 	return err;
235 }
236 
237 static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
238 {
239 	struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
240 	struct sock *sk = sock->sk;
241 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
242 
243 	BT_DBG("sock %p, sk %p", sock, sk);
244 
245 	addr->sa_family = AF_BLUETOOTH;
246 	*len = sizeof(struct sockaddr_l2);
247 
248 	if (peer) {
249 		la->l2_psm = chan->psm;
250 		bacpy(&la->l2_bdaddr, &bt_sk(sk)->dst);
251 		la->l2_cid = cpu_to_le16(chan->dcid);
252 	} else {
253 		la->l2_psm = chan->sport;
254 		bacpy(&la->l2_bdaddr, &bt_sk(sk)->src);
255 		la->l2_cid = cpu_to_le16(chan->scid);
256 	}
257 
258 	return 0;
259 }
260 
261 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, char __user *optval, int __user *optlen)
262 {
263 	struct sock *sk = sock->sk;
264 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
265 	struct l2cap_options opts;
266 	struct l2cap_conninfo cinfo;
267 	int len, err = 0;
268 	u32 opt;
269 
270 	BT_DBG("sk %p", sk);
271 
272 	if (get_user(len, optlen))
273 		return -EFAULT;
274 
275 	lock_sock(sk);
276 
277 	switch (optname) {
278 	case L2CAP_OPTIONS:
279 		memset(&opts, 0, sizeof(opts));
280 		opts.imtu     = chan->imtu;
281 		opts.omtu     = chan->omtu;
282 		opts.flush_to = chan->flush_to;
283 		opts.mode     = chan->mode;
284 		opts.fcs      = chan->fcs;
285 		opts.max_tx   = chan->max_tx;
286 		opts.txwin_size = chan->tx_win;
287 
288 		len = min_t(unsigned int, len, sizeof(opts));
289 		if (copy_to_user(optval, (char *) &opts, len))
290 			err = -EFAULT;
291 
292 		break;
293 
294 	case L2CAP_LM:
295 		switch (chan->sec_level) {
296 		case BT_SECURITY_LOW:
297 			opt = L2CAP_LM_AUTH;
298 			break;
299 		case BT_SECURITY_MEDIUM:
300 			opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
301 			break;
302 		case BT_SECURITY_HIGH:
303 			opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
304 							L2CAP_LM_SECURE;
305 			break;
306 		default:
307 			opt = 0;
308 			break;
309 		}
310 
311 		if (test_bit(FLAG_ROLE_SWITCH, &chan->flags))
312 			opt |= L2CAP_LM_MASTER;
313 
314 		if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags))
315 			opt |= L2CAP_LM_RELIABLE;
316 
317 		if (put_user(opt, (u32 __user *) optval))
318 			err = -EFAULT;
319 		break;
320 
321 	case L2CAP_CONNINFO:
322 		if (sk->sk_state != BT_CONNECTED &&
323 					!(sk->sk_state == BT_CONNECT2 &&
324 						bt_sk(sk)->defer_setup)) {
325 			err = -ENOTCONN;
326 			break;
327 		}
328 
329 		memset(&cinfo, 0, sizeof(cinfo));
330 		cinfo.hci_handle = chan->conn->hcon->handle;
331 		memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3);
332 
333 		len = min_t(unsigned int, len, sizeof(cinfo));
334 		if (copy_to_user(optval, (char *) &cinfo, len))
335 			err = -EFAULT;
336 
337 		break;
338 
339 	default:
340 		err = -ENOPROTOOPT;
341 		break;
342 	}
343 
344 	release_sock(sk);
345 	return err;
346 }
347 
348 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen)
349 {
350 	struct sock *sk = sock->sk;
351 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
352 	struct bt_security sec;
353 	struct bt_power pwr;
354 	int len, err = 0;
355 
356 	BT_DBG("sk %p", sk);
357 
358 	if (level == SOL_L2CAP)
359 		return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
360 
361 	if (level != SOL_BLUETOOTH)
362 		return -ENOPROTOOPT;
363 
364 	if (get_user(len, optlen))
365 		return -EFAULT;
366 
367 	lock_sock(sk);
368 
369 	switch (optname) {
370 	case BT_SECURITY:
371 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
372 					chan->chan_type != L2CAP_CHAN_RAW) {
373 			err = -EINVAL;
374 			break;
375 		}
376 
377 		memset(&sec, 0, sizeof(sec));
378 		sec.level = chan->sec_level;
379 
380 		if (sk->sk_state == BT_CONNECTED)
381 			sec.key_size = chan->conn->hcon->enc_key_size;
382 
383 		len = min_t(unsigned int, len, sizeof(sec));
384 		if (copy_to_user(optval, (char *) &sec, len))
385 			err = -EFAULT;
386 
387 		break;
388 
389 	case BT_DEFER_SETUP:
390 		if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
391 			err = -EINVAL;
392 			break;
393 		}
394 
395 		if (put_user(bt_sk(sk)->defer_setup, (u32 __user *) optval))
396 			err = -EFAULT;
397 
398 		break;
399 
400 	case BT_FLUSHABLE:
401 		if (put_user(test_bit(FLAG_FLUSHABLE, &chan->flags),
402 						(u32 __user *) optval))
403 			err = -EFAULT;
404 
405 		break;
406 
407 	case BT_POWER:
408 		if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM
409 				&& sk->sk_type != SOCK_RAW) {
410 			err = -EINVAL;
411 			break;
412 		}
413 
414 		pwr.force_active = test_bit(FLAG_FORCE_ACTIVE, &chan->flags);
415 
416 		len = min_t(unsigned int, len, sizeof(pwr));
417 		if (copy_to_user(optval, (char *) &pwr, len))
418 			err = -EFAULT;
419 
420 		break;
421 
422 	case BT_CHANNEL_POLICY:
423 		if (!enable_hs) {
424 			err = -ENOPROTOOPT;
425 			break;
426 		}
427 
428 		if (put_user(chan->chan_policy, (u32 __user *) optval))
429 			err = -EFAULT;
430 		break;
431 
432 	default:
433 		err = -ENOPROTOOPT;
434 		break;
435 	}
436 
437 	release_sock(sk);
438 	return err;
439 }
440 
441 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, unsigned int optlen)
442 {
443 	struct sock *sk = sock->sk;
444 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
445 	struct l2cap_options opts;
446 	int len, err = 0;
447 	u32 opt;
448 
449 	BT_DBG("sk %p", sk);
450 
451 	lock_sock(sk);
452 
453 	switch (optname) {
454 	case L2CAP_OPTIONS:
455 		if (sk->sk_state == BT_CONNECTED) {
456 			err = -EINVAL;
457 			break;
458 		}
459 
460 		opts.imtu     = chan->imtu;
461 		opts.omtu     = chan->omtu;
462 		opts.flush_to = chan->flush_to;
463 		opts.mode     = chan->mode;
464 		opts.fcs      = chan->fcs;
465 		opts.max_tx   = chan->max_tx;
466 		opts.txwin_size = chan->tx_win;
467 
468 		len = min_t(unsigned int, sizeof(opts), optlen);
469 		if (copy_from_user((char *) &opts, optval, len)) {
470 			err = -EFAULT;
471 			break;
472 		}
473 
474 		if (opts.txwin_size > L2CAP_DEFAULT_EXT_WINDOW) {
475 			err = -EINVAL;
476 			break;
477 		}
478 
479 		chan->mode = opts.mode;
480 		switch (chan->mode) {
481 		case L2CAP_MODE_BASIC:
482 			clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
483 			break;
484 		case L2CAP_MODE_ERTM:
485 		case L2CAP_MODE_STREAMING:
486 			if (!disable_ertm)
487 				break;
488 			/* fall through */
489 		default:
490 			err = -EINVAL;
491 			break;
492 		}
493 
494 		chan->imtu = opts.imtu;
495 		chan->omtu = opts.omtu;
496 		chan->fcs  = opts.fcs;
497 		chan->max_tx = opts.max_tx;
498 		chan->tx_win = opts.txwin_size;
499 		break;
500 
501 	case L2CAP_LM:
502 		if (get_user(opt, (u32 __user *) optval)) {
503 			err = -EFAULT;
504 			break;
505 		}
506 
507 		if (opt & L2CAP_LM_AUTH)
508 			chan->sec_level = BT_SECURITY_LOW;
509 		if (opt & L2CAP_LM_ENCRYPT)
510 			chan->sec_level = BT_SECURITY_MEDIUM;
511 		if (opt & L2CAP_LM_SECURE)
512 			chan->sec_level = BT_SECURITY_HIGH;
513 
514 		if (opt & L2CAP_LM_MASTER)
515 			set_bit(FLAG_ROLE_SWITCH, &chan->flags);
516 		else
517 			clear_bit(FLAG_ROLE_SWITCH, &chan->flags);
518 
519 		if (opt & L2CAP_LM_RELIABLE)
520 			set_bit(FLAG_FORCE_RELIABLE, &chan->flags);
521 		else
522 			clear_bit(FLAG_FORCE_RELIABLE, &chan->flags);
523 		break;
524 
525 	default:
526 		err = -ENOPROTOOPT;
527 		break;
528 	}
529 
530 	release_sock(sk);
531 	return err;
532 }
533 
534 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
535 {
536 	struct sock *sk = sock->sk;
537 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
538 	struct bt_security sec;
539 	struct bt_power pwr;
540 	struct l2cap_conn *conn;
541 	int len, err = 0;
542 	u32 opt;
543 
544 	BT_DBG("sk %p", sk);
545 
546 	if (level == SOL_L2CAP)
547 		return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
548 
549 	if (level != SOL_BLUETOOTH)
550 		return -ENOPROTOOPT;
551 
552 	lock_sock(sk);
553 
554 	switch (optname) {
555 	case BT_SECURITY:
556 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
557 					chan->chan_type != L2CAP_CHAN_RAW) {
558 			err = -EINVAL;
559 			break;
560 		}
561 
562 		sec.level = BT_SECURITY_LOW;
563 
564 		len = min_t(unsigned int, sizeof(sec), optlen);
565 		if (copy_from_user((char *) &sec, optval, len)) {
566 			err = -EFAULT;
567 			break;
568 		}
569 
570 		if (sec.level < BT_SECURITY_LOW ||
571 					sec.level > BT_SECURITY_HIGH) {
572 			err = -EINVAL;
573 			break;
574 		}
575 
576 		chan->sec_level = sec.level;
577 
578 		if (!chan->conn)
579 			break;
580 
581 		conn = chan->conn;
582 
583 		/*change security for LE channels */
584 		if (chan->scid == L2CAP_CID_LE_DATA) {
585 			if (!conn->hcon->out) {
586 				err = -EINVAL;
587 				break;
588 			}
589 
590 			if (smp_conn_security(conn, sec.level))
591 				break;
592 			sk->sk_state = BT_CONFIG;
593 			chan->state = BT_CONFIG;
594 
595 		/* or for ACL link, under defer_setup time */
596 		} else if (sk->sk_state == BT_CONNECT2 &&
597 					bt_sk(sk)->defer_setup) {
598 			err = l2cap_chan_check_security(chan);
599 		} else {
600 			err = -EINVAL;
601 		}
602 		break;
603 
604 	case BT_DEFER_SETUP:
605 		if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
606 			err = -EINVAL;
607 			break;
608 		}
609 
610 		if (get_user(opt, (u32 __user *) optval)) {
611 			err = -EFAULT;
612 			break;
613 		}
614 
615 		bt_sk(sk)->defer_setup = opt;
616 		break;
617 
618 	case BT_FLUSHABLE:
619 		if (get_user(opt, (u32 __user *) optval)) {
620 			err = -EFAULT;
621 			break;
622 		}
623 
624 		if (opt > BT_FLUSHABLE_ON) {
625 			err = -EINVAL;
626 			break;
627 		}
628 
629 		if (opt == BT_FLUSHABLE_OFF) {
630 			struct l2cap_conn *conn = chan->conn;
631 			/* proceed further only when we have l2cap_conn and
632 			   No Flush support in the LM */
633 			if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
634 				err = -EINVAL;
635 				break;
636 			}
637 		}
638 
639 		if (opt)
640 			set_bit(FLAG_FLUSHABLE, &chan->flags);
641 		else
642 			clear_bit(FLAG_FLUSHABLE, &chan->flags);
643 		break;
644 
645 	case BT_POWER:
646 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
647 					chan->chan_type != L2CAP_CHAN_RAW) {
648 			err = -EINVAL;
649 			break;
650 		}
651 
652 		pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
653 
654 		len = min_t(unsigned int, sizeof(pwr), optlen);
655 		if (copy_from_user((char *) &pwr, optval, len)) {
656 			err = -EFAULT;
657 			break;
658 		}
659 
660 		if (pwr.force_active)
661 			set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
662 		else
663 			clear_bit(FLAG_FORCE_ACTIVE, &chan->flags);
664 		break;
665 
666 	case BT_CHANNEL_POLICY:
667 		if (!enable_hs) {
668 			err = -ENOPROTOOPT;
669 			break;
670 		}
671 
672 		if (get_user(opt, (u32 __user *) optval)) {
673 			err = -EFAULT;
674 			break;
675 		}
676 
677 		if (opt > BT_CHANNEL_POLICY_AMP_PREFERRED) {
678 			err = -EINVAL;
679 			break;
680 		}
681 
682 		if (chan->mode != L2CAP_MODE_ERTM &&
683 				chan->mode != L2CAP_MODE_STREAMING) {
684 			err = -EOPNOTSUPP;
685 			break;
686 		}
687 
688 		chan->chan_policy = (u8) opt;
689 		break;
690 
691 	default:
692 		err = -ENOPROTOOPT;
693 		break;
694 	}
695 
696 	release_sock(sk);
697 	return err;
698 }
699 
700 static int l2cap_sock_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len)
701 {
702 	struct sock *sk = sock->sk;
703 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
704 	int err;
705 
706 	BT_DBG("sock %p, sk %p", sock, sk);
707 
708 	err = sock_error(sk);
709 	if (err)
710 		return err;
711 
712 	if (msg->msg_flags & MSG_OOB)
713 		return -EOPNOTSUPP;
714 
715 	lock_sock(sk);
716 
717 	if (sk->sk_state != BT_CONNECTED) {
718 		release_sock(sk);
719 		return -ENOTCONN;
720 	}
721 
722 	err = l2cap_chan_send(chan, msg, len, sk->sk_priority);
723 
724 	release_sock(sk);
725 	return err;
726 }
727 
728 static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len, int flags)
729 {
730 	struct sock *sk = sock->sk;
731 	struct l2cap_pinfo *pi = l2cap_pi(sk);
732 	int err;
733 
734 	lock_sock(sk);
735 
736 	if (sk->sk_state == BT_CONNECT2 && bt_sk(sk)->defer_setup) {
737 		sk->sk_state = BT_CONFIG;
738 		pi->chan->state = BT_CONFIG;
739 
740 		__l2cap_connect_rsp_defer(pi->chan);
741 		release_sock(sk);
742 		return 0;
743 	}
744 
745 	release_sock(sk);
746 
747 	if (sock->type == SOCK_STREAM)
748 		err = bt_sock_stream_recvmsg(iocb, sock, msg, len, flags);
749 	else
750 		err = bt_sock_recvmsg(iocb, sock, msg, len, flags);
751 
752 	if (pi->chan->mode != L2CAP_MODE_ERTM)
753 		return err;
754 
755 	/* Attempt to put pending rx data in the socket buffer */
756 
757 	lock_sock(sk);
758 
759 	if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state))
760 		goto done;
761 
762 	if (pi->rx_busy_skb) {
763 		if (!sock_queue_rcv_skb(sk, pi->rx_busy_skb))
764 			pi->rx_busy_skb = NULL;
765 		else
766 			goto done;
767 	}
768 
769 	/* Restore data flow when half of the receive buffer is
770 	 * available.  This avoids resending large numbers of
771 	 * frames.
772 	 */
773 	if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf >> 1)
774 		l2cap_chan_busy(pi->chan, 0);
775 
776 done:
777 	release_sock(sk);
778 	return err;
779 }
780 
781 /* Kill socket (only if zapped and orphan)
782  * Must be called on unlocked socket.
783  */
784 static void l2cap_sock_kill(struct sock *sk)
785 {
786 	if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
787 		return;
788 
789 	BT_DBG("sk %p state %s", sk, state_to_string(sk->sk_state));
790 
791 	/* Kill poor orphan */
792 
793 	l2cap_chan_destroy(l2cap_pi(sk)->chan);
794 	sock_set_flag(sk, SOCK_DEAD);
795 	sock_put(sk);
796 }
797 
798 static int l2cap_sock_shutdown(struct socket *sock, int how)
799 {
800 	struct sock *sk = sock->sk;
801 	struct l2cap_chan *chan;
802 	struct l2cap_conn *conn;
803 	int err = 0;
804 
805 	BT_DBG("sock %p, sk %p", sock, sk);
806 
807 	if (!sk)
808 		return 0;
809 
810 	chan = l2cap_pi(sk)->chan;
811 	conn = chan->conn;
812 
813 	if (conn)
814 		mutex_lock(&conn->chan_lock);
815 
816 	l2cap_chan_lock(chan);
817 	lock_sock(sk);
818 
819 	if (!sk->sk_shutdown) {
820 		if (chan->mode == L2CAP_MODE_ERTM)
821 			err = __l2cap_wait_ack(sk);
822 
823 		sk->sk_shutdown = SHUTDOWN_MASK;
824 
825 		release_sock(sk);
826 		l2cap_chan_close(chan, 0);
827 		lock_sock(sk);
828 
829 		if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime)
830 			err = bt_sock_wait_state(sk, BT_CLOSED,
831 							sk->sk_lingertime);
832 	}
833 
834 	if (!err && sk->sk_err)
835 		err = -sk->sk_err;
836 
837 	release_sock(sk);
838 	l2cap_chan_unlock(chan);
839 
840 	if (conn)
841 		mutex_unlock(&conn->chan_lock);
842 
843 	return err;
844 }
845 
846 static int l2cap_sock_release(struct socket *sock)
847 {
848 	struct sock *sk = sock->sk;
849 	int err;
850 
851 	BT_DBG("sock %p, sk %p", sock, sk);
852 
853 	if (!sk)
854 		return 0;
855 
856 	err = l2cap_sock_shutdown(sock, 2);
857 
858 	sock_orphan(sk);
859 	l2cap_sock_kill(sk);
860 	return err;
861 }
862 
863 static struct l2cap_chan *l2cap_sock_new_connection_cb(void *data)
864 {
865 	struct sock *sk, *parent = data;
866 
867 	sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
868 								GFP_ATOMIC);
869 	if (!sk)
870 		return NULL;
871 
872 	bt_sock_reclassify_lock(sk, BTPROTO_L2CAP);
873 
874 	l2cap_sock_init(sk, parent);
875 
876 	return l2cap_pi(sk)->chan;
877 }
878 
879 static int l2cap_sock_recv_cb(void *data, struct sk_buff *skb)
880 {
881 	int err;
882 	struct sock *sk = data;
883 	struct l2cap_pinfo *pi = l2cap_pi(sk);
884 
885 	lock_sock(sk);
886 
887 	if (pi->rx_busy_skb) {
888 		err = -ENOMEM;
889 		goto done;
890 	}
891 
892 	err = sock_queue_rcv_skb(sk, skb);
893 
894 	/* For ERTM, handle one skb that doesn't fit into the recv
895 	 * buffer.  This is important to do because the data frames
896 	 * have already been acked, so the skb cannot be discarded.
897 	 *
898 	 * Notify the l2cap core that the buffer is full, so the
899 	 * LOCAL_BUSY state is entered and no more frames are
900 	 * acked and reassembled until there is buffer space
901 	 * available.
902 	 */
903 	if (err < 0 && pi->chan->mode == L2CAP_MODE_ERTM) {
904 		pi->rx_busy_skb = skb;
905 		l2cap_chan_busy(pi->chan, 1);
906 		err = 0;
907 	}
908 
909 done:
910 	release_sock(sk);
911 
912 	return err;
913 }
914 
915 static void l2cap_sock_close_cb(void *data)
916 {
917 	struct sock *sk = data;
918 
919 	l2cap_sock_kill(sk);
920 }
921 
922 static void l2cap_sock_state_change_cb(void *data, int state)
923 {
924 	struct sock *sk = data;
925 
926 	sk->sk_state = state;
927 }
928 
929 static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan,
930 					       unsigned long len, int nb)
931 {
932 	struct sk_buff *skb;
933 	int err;
934 
935 	skb = bt_skb_send_alloc(chan->sk, len, nb, &err);
936 	if (!skb)
937 		return ERR_PTR(err);
938 
939 	return skb;
940 }
941 
942 static struct l2cap_ops l2cap_chan_ops = {
943 	.name		= "L2CAP Socket Interface",
944 	.new_connection	= l2cap_sock_new_connection_cb,
945 	.recv		= l2cap_sock_recv_cb,
946 	.close		= l2cap_sock_close_cb,
947 	.state_change	= l2cap_sock_state_change_cb,
948 	.alloc_skb	= l2cap_sock_alloc_skb_cb,
949 };
950 
951 static void l2cap_sock_destruct(struct sock *sk)
952 {
953 	BT_DBG("sk %p", sk);
954 
955 	if (l2cap_pi(sk)->rx_busy_skb) {
956 		kfree_skb(l2cap_pi(sk)->rx_busy_skb);
957 		l2cap_pi(sk)->rx_busy_skb = NULL;
958 	}
959 
960 	skb_queue_purge(&sk->sk_receive_queue);
961 	skb_queue_purge(&sk->sk_write_queue);
962 }
963 
964 static void l2cap_sock_init(struct sock *sk, struct sock *parent)
965 {
966 	struct l2cap_pinfo *pi = l2cap_pi(sk);
967 	struct l2cap_chan *chan = pi->chan;
968 
969 	BT_DBG("sk %p", sk);
970 
971 	if (parent) {
972 		struct l2cap_chan *pchan = l2cap_pi(parent)->chan;
973 
974 		sk->sk_type = parent->sk_type;
975 		bt_sk(sk)->defer_setup = bt_sk(parent)->defer_setup;
976 
977 		chan->chan_type = pchan->chan_type;
978 		chan->imtu = pchan->imtu;
979 		chan->omtu = pchan->omtu;
980 		chan->conf_state = pchan->conf_state;
981 		chan->mode = pchan->mode;
982 		chan->fcs  = pchan->fcs;
983 		chan->max_tx = pchan->max_tx;
984 		chan->tx_win = pchan->tx_win;
985 		chan->tx_win_max = pchan->tx_win_max;
986 		chan->sec_level = pchan->sec_level;
987 		chan->flags = pchan->flags;
988 
989 		security_sk_clone(parent, sk);
990 	} else {
991 
992 		switch (sk->sk_type) {
993 		case SOCK_RAW:
994 			chan->chan_type = L2CAP_CHAN_RAW;
995 			break;
996 		case SOCK_DGRAM:
997 			chan->chan_type = L2CAP_CHAN_CONN_LESS;
998 			break;
999 		case SOCK_SEQPACKET:
1000 		case SOCK_STREAM:
1001 			chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
1002 			break;
1003 		}
1004 
1005 		chan->imtu = L2CAP_DEFAULT_MTU;
1006 		chan->omtu = 0;
1007 		if (!disable_ertm && sk->sk_type == SOCK_STREAM) {
1008 			chan->mode = L2CAP_MODE_ERTM;
1009 			set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
1010 		} else {
1011 			chan->mode = L2CAP_MODE_BASIC;
1012 		}
1013 
1014 		l2cap_chan_set_defaults(chan);
1015 	}
1016 
1017 	/* Default config options */
1018 	chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
1019 
1020 	chan->data = sk;
1021 	chan->ops = &l2cap_chan_ops;
1022 }
1023 
1024 static struct proto l2cap_proto = {
1025 	.name		= "L2CAP",
1026 	.owner		= THIS_MODULE,
1027 	.obj_size	= sizeof(struct l2cap_pinfo)
1028 };
1029 
1030 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio)
1031 {
1032 	struct sock *sk;
1033 	struct l2cap_chan *chan;
1034 
1035 	sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto);
1036 	if (!sk)
1037 		return NULL;
1038 
1039 	sock_init_data(sock, sk);
1040 	INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1041 
1042 	sk->sk_destruct = l2cap_sock_destruct;
1043 	sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
1044 
1045 	sock_reset_flag(sk, SOCK_ZAPPED);
1046 
1047 	sk->sk_protocol = proto;
1048 	sk->sk_state = BT_OPEN;
1049 
1050 	chan = l2cap_chan_create();
1051 	if (!chan) {
1052 		l2cap_sock_kill(sk);
1053 		return NULL;
1054 	}
1055 
1056 	chan->sk = sk;
1057 
1058 	l2cap_pi(sk)->chan = chan;
1059 
1060 	return sk;
1061 }
1062 
1063 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1064 			     int kern)
1065 {
1066 	struct sock *sk;
1067 
1068 	BT_DBG("sock %p", sock);
1069 
1070 	sock->state = SS_UNCONNECTED;
1071 
1072 	if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1073 			sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1074 		return -ESOCKTNOSUPPORT;
1075 
1076 	if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1077 		return -EPERM;
1078 
1079 	sock->ops = &l2cap_sock_ops;
1080 
1081 	sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC);
1082 	if (!sk)
1083 		return -ENOMEM;
1084 
1085 	l2cap_sock_init(sk, NULL);
1086 	return 0;
1087 }
1088 
1089 static const struct proto_ops l2cap_sock_ops = {
1090 	.family		= PF_BLUETOOTH,
1091 	.owner		= THIS_MODULE,
1092 	.release	= l2cap_sock_release,
1093 	.bind		= l2cap_sock_bind,
1094 	.connect	= l2cap_sock_connect,
1095 	.listen		= l2cap_sock_listen,
1096 	.accept		= l2cap_sock_accept,
1097 	.getname	= l2cap_sock_getname,
1098 	.sendmsg	= l2cap_sock_sendmsg,
1099 	.recvmsg	= l2cap_sock_recvmsg,
1100 	.poll		= bt_sock_poll,
1101 	.ioctl		= bt_sock_ioctl,
1102 	.mmap		= sock_no_mmap,
1103 	.socketpair	= sock_no_socketpair,
1104 	.shutdown	= l2cap_sock_shutdown,
1105 	.setsockopt	= l2cap_sock_setsockopt,
1106 	.getsockopt	= l2cap_sock_getsockopt
1107 };
1108 
1109 static const struct net_proto_family l2cap_sock_family_ops = {
1110 	.family	= PF_BLUETOOTH,
1111 	.owner	= THIS_MODULE,
1112 	.create	= l2cap_sock_create,
1113 };
1114 
1115 int __init l2cap_init_sockets(void)
1116 {
1117 	int err;
1118 
1119 	err = proto_register(&l2cap_proto, 0);
1120 	if (err < 0)
1121 		return err;
1122 
1123 	err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1124 	if (err < 0)
1125 		goto error;
1126 
1127 	BT_INFO("L2CAP socket layer initialized");
1128 
1129 	return 0;
1130 
1131 error:
1132 	BT_ERR("L2CAP socket registration failed");
1133 	proto_unregister(&l2cap_proto);
1134 	return err;
1135 }
1136 
1137 void l2cap_cleanup_sockets(void)
1138 {
1139 	if (bt_sock_unregister(BTPROTO_L2CAP) < 0)
1140 		BT_ERR("L2CAP socket unregistration failed");
1141 
1142 	proto_unregister(&l2cap_proto);
1143 }
1144