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