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