xref: /openbmc/linux/net/bluetooth/l2cap_sock.c (revision c819e2cf)
1 /*
2    BlueZ - Bluetooth protocol stack for Linux
3    Copyright (C) 2000-2001 Qualcomm Incorporated
4    Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org>
5    Copyright (C) 2010 Google Inc.
6    Copyright (C) 2011 ProFUSION Embedded Systems
7 
8    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
9 
10    This program is free software; you can redistribute it and/or modify
11    it under the terms of the GNU General Public License version 2 as
12    published by the Free Software Foundation;
13 
14    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
17    IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
18    CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
19    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
21    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22 
23    ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
24    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
25    SOFTWARE IS DISCLAIMED.
26 */
27 
28 /* Bluetooth L2CAP sockets. */
29 
30 #include <linux/module.h>
31 #include <linux/export.h>
32 
33 #include <net/bluetooth/bluetooth.h>
34 #include <net/bluetooth/hci_core.h>
35 #include <net/bluetooth/l2cap.h>
36 
37 #include "smp.h"
38 
39 static struct bt_sock_list l2cap_sk_list = {
40 	.lock = __RW_LOCK_UNLOCKED(l2cap_sk_list.lock)
41 };
42 
43 static const struct proto_ops l2cap_sock_ops;
44 static void l2cap_sock_init(struct sock *sk, struct sock *parent);
45 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
46 				     int proto, gfp_t prio);
47 
48 bool l2cap_is_socket(struct socket *sock)
49 {
50 	return sock && sock->ops == &l2cap_sock_ops;
51 }
52 EXPORT_SYMBOL(l2cap_is_socket);
53 
54 static int l2cap_validate_bredr_psm(u16 psm)
55 {
56 	/* PSM must be odd and lsb of upper byte must be 0 */
57 	if ((psm & 0x0101) != 0x0001)
58 		return -EINVAL;
59 
60 	/* Restrict usage of well-known PSMs */
61 	if (psm < 0x1001 && !capable(CAP_NET_BIND_SERVICE))
62 		return -EACCES;
63 
64 	return 0;
65 }
66 
67 static int l2cap_validate_le_psm(u16 psm)
68 {
69 	/* Valid LE_PSM ranges are defined only until 0x00ff */
70 	if (psm > 0x00ff)
71 		return -EINVAL;
72 
73 	/* Restrict fixed, SIG assigned PSM values to CAP_NET_BIND_SERVICE */
74 	if (psm <= 0x007f && !capable(CAP_NET_BIND_SERVICE))
75 		return -EACCES;
76 
77 	return 0;
78 }
79 
80 static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
81 {
82 	struct sock *sk = sock->sk;
83 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
84 	struct sockaddr_l2 la;
85 	int len, err = 0;
86 
87 	BT_DBG("sk %p", sk);
88 
89 	if (!addr || addr->sa_family != AF_BLUETOOTH)
90 		return -EINVAL;
91 
92 	memset(&la, 0, sizeof(la));
93 	len = min_t(unsigned int, sizeof(la), alen);
94 	memcpy(&la, addr, len);
95 
96 	if (la.l2_cid && la.l2_psm)
97 		return -EINVAL;
98 
99 	if (!bdaddr_type_is_valid(la.l2_bdaddr_type))
100 		return -EINVAL;
101 
102 	if (bdaddr_type_is_le(la.l2_bdaddr_type)) {
103 		/* We only allow ATT user space socket */
104 		if (la.l2_cid &&
105 		    la.l2_cid != cpu_to_le16(L2CAP_CID_ATT))
106 			return -EINVAL;
107 	}
108 
109 	lock_sock(sk);
110 
111 	if (sk->sk_state != BT_OPEN) {
112 		err = -EBADFD;
113 		goto done;
114 	}
115 
116 	if (la.l2_psm) {
117 		__u16 psm = __le16_to_cpu(la.l2_psm);
118 
119 		if (la.l2_bdaddr_type == BDADDR_BREDR)
120 			err = l2cap_validate_bredr_psm(psm);
121 		else
122 			err = l2cap_validate_le_psm(psm);
123 
124 		if (err)
125 			goto done;
126 	}
127 
128 	if (la.l2_cid)
129 		err = l2cap_add_scid(chan, __le16_to_cpu(la.l2_cid));
130 	else
131 		err = l2cap_add_psm(chan, &la.l2_bdaddr, la.l2_psm);
132 
133 	if (err < 0)
134 		goto done;
135 
136 	switch (chan->chan_type) {
137 	case L2CAP_CHAN_CONN_LESS:
138 		if (__le16_to_cpu(la.l2_psm) == L2CAP_PSM_3DSP)
139 			chan->sec_level = BT_SECURITY_SDP;
140 		break;
141 	case L2CAP_CHAN_CONN_ORIENTED:
142 		if (__le16_to_cpu(la.l2_psm) == L2CAP_PSM_SDP ||
143 		    __le16_to_cpu(la.l2_psm) == L2CAP_PSM_RFCOMM)
144 			chan->sec_level = BT_SECURITY_SDP;
145 		break;
146 	case L2CAP_CHAN_RAW:
147 		chan->sec_level = BT_SECURITY_SDP;
148 		break;
149 	case L2CAP_CHAN_FIXED:
150 		/* Fixed channels default to the L2CAP core not holding a
151 		 * hci_conn reference for them. For fixed channels mapping to
152 		 * L2CAP sockets we do want to hold a reference so set the
153 		 * appropriate flag to request it.
154 		 */
155 		set_bit(FLAG_HOLD_HCI_CONN, &chan->flags);
156 		break;
157 	}
158 
159 	bacpy(&chan->src, &la.l2_bdaddr);
160 	chan->src_type = la.l2_bdaddr_type;
161 
162 	if (chan->psm && bdaddr_type_is_le(chan->src_type))
163 		chan->mode = L2CAP_MODE_LE_FLOWCTL;
164 
165 	chan->state = BT_BOUND;
166 	sk->sk_state = BT_BOUND;
167 
168 done:
169 	release_sock(sk);
170 	return err;
171 }
172 
173 static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr,
174 			      int alen, int flags)
175 {
176 	struct sock *sk = sock->sk;
177 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
178 	struct sockaddr_l2 la;
179 	int len, err = 0;
180 
181 	BT_DBG("sk %p", sk);
182 
183 	if (!addr || alen < sizeof(addr->sa_family) ||
184 	    addr->sa_family != AF_BLUETOOTH)
185 		return -EINVAL;
186 
187 	memset(&la, 0, sizeof(la));
188 	len = min_t(unsigned int, sizeof(la), alen);
189 	memcpy(&la, addr, len);
190 
191 	if (la.l2_cid && la.l2_psm)
192 		return -EINVAL;
193 
194 	if (!bdaddr_type_is_valid(la.l2_bdaddr_type))
195 		return -EINVAL;
196 
197 	/* Check that the socket wasn't bound to something that
198 	 * conflicts with the address given to connect(). If chan->src
199 	 * is BDADDR_ANY it means bind() was never used, in which case
200 	 * chan->src_type and la.l2_bdaddr_type do not need to match.
201 	 */
202 	if (chan->src_type == BDADDR_BREDR && bacmp(&chan->src, BDADDR_ANY) &&
203 	    bdaddr_type_is_le(la.l2_bdaddr_type)) {
204 		/* Old user space versions will try to incorrectly bind
205 		 * the ATT socket using BDADDR_BREDR. We need to accept
206 		 * this and fix up the source address type only when
207 		 * both the source CID and destination CID indicate
208 		 * ATT. Anything else is an invalid combination.
209 		 */
210 		if (chan->scid != L2CAP_CID_ATT ||
211 		    la.l2_cid != cpu_to_le16(L2CAP_CID_ATT))
212 			return -EINVAL;
213 
214 		/* We don't have the hdev available here to make a
215 		 * better decision on random vs public, but since all
216 		 * user space versions that exhibit this issue anyway do
217 		 * not support random local addresses assuming public
218 		 * here is good enough.
219 		 */
220 		chan->src_type = BDADDR_LE_PUBLIC;
221 	}
222 
223 	if (chan->src_type != BDADDR_BREDR && la.l2_bdaddr_type == BDADDR_BREDR)
224 		return -EINVAL;
225 
226 	if (bdaddr_type_is_le(la.l2_bdaddr_type)) {
227 		/* We only allow ATT user space socket */
228 		if (la.l2_cid &&
229 		    la.l2_cid != cpu_to_le16(L2CAP_CID_ATT))
230 			return -EINVAL;
231 	}
232 
233 	if (chan->psm && bdaddr_type_is_le(chan->src_type))
234 		chan->mode = L2CAP_MODE_LE_FLOWCTL;
235 
236 	err = l2cap_chan_connect(chan, la.l2_psm, __le16_to_cpu(la.l2_cid),
237 				 &la.l2_bdaddr, la.l2_bdaddr_type);
238 	if (err)
239 		return err;
240 
241 	lock_sock(sk);
242 
243 	err = bt_sock_wait_state(sk, BT_CONNECTED,
244 				 sock_sndtimeo(sk, flags & O_NONBLOCK));
245 
246 	release_sock(sk);
247 
248 	return err;
249 }
250 
251 static int l2cap_sock_listen(struct socket *sock, int backlog)
252 {
253 	struct sock *sk = sock->sk;
254 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
255 	int err = 0;
256 
257 	BT_DBG("sk %p backlog %d", sk, backlog);
258 
259 	lock_sock(sk);
260 
261 	if (sk->sk_state != BT_BOUND) {
262 		err = -EBADFD;
263 		goto done;
264 	}
265 
266 	if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM) {
267 		err = -EINVAL;
268 		goto done;
269 	}
270 
271 	switch (chan->mode) {
272 	case L2CAP_MODE_BASIC:
273 	case L2CAP_MODE_LE_FLOWCTL:
274 		break;
275 	case L2CAP_MODE_ERTM:
276 	case L2CAP_MODE_STREAMING:
277 		if (!disable_ertm)
278 			break;
279 		/* fall through */
280 	default:
281 		err = -EOPNOTSUPP;
282 		goto done;
283 	}
284 
285 	sk->sk_max_ack_backlog = backlog;
286 	sk->sk_ack_backlog = 0;
287 
288 	/* Listening channels need to use nested locking in order not to
289 	 * cause lockdep warnings when the created child channels end up
290 	 * being locked in the same thread as the parent channel.
291 	 */
292 	atomic_set(&chan->nesting, L2CAP_NESTING_PARENT);
293 
294 	chan->state = BT_LISTEN;
295 	sk->sk_state = BT_LISTEN;
296 
297 done:
298 	release_sock(sk);
299 	return err;
300 }
301 
302 static int l2cap_sock_accept(struct socket *sock, struct socket *newsock,
303 			     int flags)
304 {
305 	DECLARE_WAITQUEUE(wait, current);
306 	struct sock *sk = sock->sk, *nsk;
307 	long timeo;
308 	int err = 0;
309 
310 	lock_sock_nested(sk, L2CAP_NESTING_PARENT);
311 
312 	timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
313 
314 	BT_DBG("sk %p timeo %ld", sk, timeo);
315 
316 	/* Wait for an incoming connection. (wake-one). */
317 	add_wait_queue_exclusive(sk_sleep(sk), &wait);
318 	while (1) {
319 		set_current_state(TASK_INTERRUPTIBLE);
320 
321 		if (sk->sk_state != BT_LISTEN) {
322 			err = -EBADFD;
323 			break;
324 		}
325 
326 		nsk = bt_accept_dequeue(sk, newsock);
327 		if (nsk)
328 			break;
329 
330 		if (!timeo) {
331 			err = -EAGAIN;
332 			break;
333 		}
334 
335 		if (signal_pending(current)) {
336 			err = sock_intr_errno(timeo);
337 			break;
338 		}
339 
340 		release_sock(sk);
341 		timeo = schedule_timeout(timeo);
342 		lock_sock_nested(sk, L2CAP_NESTING_PARENT);
343 	}
344 	__set_current_state(TASK_RUNNING);
345 	remove_wait_queue(sk_sleep(sk), &wait);
346 
347 	if (err)
348 		goto done;
349 
350 	newsock->state = SS_CONNECTED;
351 
352 	BT_DBG("new socket %p", nsk);
353 
354 done:
355 	release_sock(sk);
356 	return err;
357 }
358 
359 static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr,
360 			      int *len, int peer)
361 {
362 	struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
363 	struct sock *sk = sock->sk;
364 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
365 
366 	BT_DBG("sock %p, sk %p", sock, sk);
367 
368 	if (peer && sk->sk_state != BT_CONNECTED &&
369 	    sk->sk_state != BT_CONNECT && sk->sk_state != BT_CONNECT2 &&
370 	    sk->sk_state != BT_CONFIG)
371 		return -ENOTCONN;
372 
373 	memset(la, 0, sizeof(struct sockaddr_l2));
374 	addr->sa_family = AF_BLUETOOTH;
375 	*len = sizeof(struct sockaddr_l2);
376 
377 	la->l2_psm = chan->psm;
378 
379 	if (peer) {
380 		bacpy(&la->l2_bdaddr, &chan->dst);
381 		la->l2_cid = cpu_to_le16(chan->dcid);
382 		la->l2_bdaddr_type = chan->dst_type;
383 	} else {
384 		bacpy(&la->l2_bdaddr, &chan->src);
385 		la->l2_cid = cpu_to_le16(chan->scid);
386 		la->l2_bdaddr_type = chan->src_type;
387 	}
388 
389 	return 0;
390 }
391 
392 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname,
393 				     char __user *optval, int __user *optlen)
394 {
395 	struct sock *sk = sock->sk;
396 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
397 	struct l2cap_options opts;
398 	struct l2cap_conninfo cinfo;
399 	int len, err = 0;
400 	u32 opt;
401 
402 	BT_DBG("sk %p", sk);
403 
404 	if (get_user(len, optlen))
405 		return -EFAULT;
406 
407 	lock_sock(sk);
408 
409 	switch (optname) {
410 	case L2CAP_OPTIONS:
411 		/* LE sockets should use BT_SNDMTU/BT_RCVMTU, but since
412 		 * legacy ATT code depends on getsockopt for
413 		 * L2CAP_OPTIONS we need to let this pass.
414 		 */
415 		if (bdaddr_type_is_le(chan->src_type) &&
416 		    chan->scid != L2CAP_CID_ATT) {
417 			err = -EINVAL;
418 			break;
419 		}
420 
421 		memset(&opts, 0, sizeof(opts));
422 		opts.imtu     = chan->imtu;
423 		opts.omtu     = chan->omtu;
424 		opts.flush_to = chan->flush_to;
425 		opts.mode     = chan->mode;
426 		opts.fcs      = chan->fcs;
427 		opts.max_tx   = chan->max_tx;
428 		opts.txwin_size = chan->tx_win;
429 
430 		len = min_t(unsigned int, len, sizeof(opts));
431 		if (copy_to_user(optval, (char *) &opts, len))
432 			err = -EFAULT;
433 
434 		break;
435 
436 	case L2CAP_LM:
437 		switch (chan->sec_level) {
438 		case BT_SECURITY_LOW:
439 			opt = L2CAP_LM_AUTH;
440 			break;
441 		case BT_SECURITY_MEDIUM:
442 			opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
443 			break;
444 		case BT_SECURITY_HIGH:
445 			opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
446 			      L2CAP_LM_SECURE;
447 			break;
448 		case BT_SECURITY_FIPS:
449 			opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
450 			      L2CAP_LM_SECURE | L2CAP_LM_FIPS;
451 			break;
452 		default:
453 			opt = 0;
454 			break;
455 		}
456 
457 		if (test_bit(FLAG_ROLE_SWITCH, &chan->flags))
458 			opt |= L2CAP_LM_MASTER;
459 
460 		if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags))
461 			opt |= L2CAP_LM_RELIABLE;
462 
463 		if (put_user(opt, (u32 __user *) optval))
464 			err = -EFAULT;
465 
466 		break;
467 
468 	case L2CAP_CONNINFO:
469 		if (sk->sk_state != BT_CONNECTED &&
470 		    !(sk->sk_state == BT_CONNECT2 &&
471 		      test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))) {
472 			err = -ENOTCONN;
473 			break;
474 		}
475 
476 		memset(&cinfo, 0, sizeof(cinfo));
477 		cinfo.hci_handle = chan->conn->hcon->handle;
478 		memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3);
479 
480 		len = min_t(unsigned int, len, sizeof(cinfo));
481 		if (copy_to_user(optval, (char *) &cinfo, len))
482 			err = -EFAULT;
483 
484 		break;
485 
486 	default:
487 		err = -ENOPROTOOPT;
488 		break;
489 	}
490 
491 	release_sock(sk);
492 	return err;
493 }
494 
495 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname,
496 				 char __user *optval, int __user *optlen)
497 {
498 	struct sock *sk = sock->sk;
499 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
500 	struct bt_security sec;
501 	struct bt_power pwr;
502 	int len, err = 0;
503 
504 	BT_DBG("sk %p", sk);
505 
506 	if (level == SOL_L2CAP)
507 		return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
508 
509 	if (level != SOL_BLUETOOTH)
510 		return -ENOPROTOOPT;
511 
512 	if (get_user(len, optlen))
513 		return -EFAULT;
514 
515 	lock_sock(sk);
516 
517 	switch (optname) {
518 	case BT_SECURITY:
519 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
520 		    chan->chan_type != L2CAP_CHAN_FIXED &&
521 		    chan->chan_type != L2CAP_CHAN_RAW) {
522 			err = -EINVAL;
523 			break;
524 		}
525 
526 		memset(&sec, 0, sizeof(sec));
527 		if (chan->conn) {
528 			sec.level = chan->conn->hcon->sec_level;
529 
530 			if (sk->sk_state == BT_CONNECTED)
531 				sec.key_size = chan->conn->hcon->enc_key_size;
532 		} else {
533 			sec.level = chan->sec_level;
534 		}
535 
536 		len = min_t(unsigned int, len, sizeof(sec));
537 		if (copy_to_user(optval, (char *) &sec, len))
538 			err = -EFAULT;
539 
540 		break;
541 
542 	case BT_DEFER_SETUP:
543 		if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
544 			err = -EINVAL;
545 			break;
546 		}
547 
548 		if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags),
549 			     (u32 __user *) optval))
550 			err = -EFAULT;
551 
552 		break;
553 
554 	case BT_FLUSHABLE:
555 		if (put_user(test_bit(FLAG_FLUSHABLE, &chan->flags),
556 			     (u32 __user *) optval))
557 			err = -EFAULT;
558 
559 		break;
560 
561 	case BT_POWER:
562 		if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM
563 		    && sk->sk_type != SOCK_RAW) {
564 			err = -EINVAL;
565 			break;
566 		}
567 
568 		pwr.force_active = test_bit(FLAG_FORCE_ACTIVE, &chan->flags);
569 
570 		len = min_t(unsigned int, len, sizeof(pwr));
571 		if (copy_to_user(optval, (char *) &pwr, len))
572 			err = -EFAULT;
573 
574 		break;
575 
576 	case BT_CHANNEL_POLICY:
577 		if (put_user(chan->chan_policy, (u32 __user *) optval))
578 			err = -EFAULT;
579 		break;
580 
581 	case BT_SNDMTU:
582 		if (!bdaddr_type_is_le(chan->src_type)) {
583 			err = -EINVAL;
584 			break;
585 		}
586 
587 		if (sk->sk_state != BT_CONNECTED) {
588 			err = -ENOTCONN;
589 			break;
590 		}
591 
592 		if (put_user(chan->omtu, (u16 __user *) optval))
593 			err = -EFAULT;
594 		break;
595 
596 	case BT_RCVMTU:
597 		if (!bdaddr_type_is_le(chan->src_type)) {
598 			err = -EINVAL;
599 			break;
600 		}
601 
602 		if (put_user(chan->imtu, (u16 __user *) optval))
603 			err = -EFAULT;
604 		break;
605 
606 	default:
607 		err = -ENOPROTOOPT;
608 		break;
609 	}
610 
611 	release_sock(sk);
612 	return err;
613 }
614 
615 static bool l2cap_valid_mtu(struct l2cap_chan *chan, u16 mtu)
616 {
617 	switch (chan->scid) {
618 	case L2CAP_CID_ATT:
619 		if (mtu < L2CAP_LE_MIN_MTU)
620 			return false;
621 		break;
622 
623 	default:
624 		if (mtu < L2CAP_DEFAULT_MIN_MTU)
625 			return false;
626 	}
627 
628 	return true;
629 }
630 
631 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
632 				     char __user *optval, unsigned int optlen)
633 {
634 	struct sock *sk = sock->sk;
635 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
636 	struct l2cap_options opts;
637 	int len, err = 0;
638 	u32 opt;
639 
640 	BT_DBG("sk %p", sk);
641 
642 	lock_sock(sk);
643 
644 	switch (optname) {
645 	case L2CAP_OPTIONS:
646 		if (bdaddr_type_is_le(chan->src_type)) {
647 			err = -EINVAL;
648 			break;
649 		}
650 
651 		if (sk->sk_state == BT_CONNECTED) {
652 			err = -EINVAL;
653 			break;
654 		}
655 
656 		opts.imtu     = chan->imtu;
657 		opts.omtu     = chan->omtu;
658 		opts.flush_to = chan->flush_to;
659 		opts.mode     = chan->mode;
660 		opts.fcs      = chan->fcs;
661 		opts.max_tx   = chan->max_tx;
662 		opts.txwin_size = chan->tx_win;
663 
664 		len = min_t(unsigned int, sizeof(opts), optlen);
665 		if (copy_from_user((char *) &opts, optval, len)) {
666 			err = -EFAULT;
667 			break;
668 		}
669 
670 		if (opts.txwin_size > L2CAP_DEFAULT_EXT_WINDOW) {
671 			err = -EINVAL;
672 			break;
673 		}
674 
675 		if (!l2cap_valid_mtu(chan, opts.imtu)) {
676 			err = -EINVAL;
677 			break;
678 		}
679 
680 		chan->mode = opts.mode;
681 		switch (chan->mode) {
682 		case L2CAP_MODE_LE_FLOWCTL:
683 			break;
684 		case L2CAP_MODE_BASIC:
685 			clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
686 			break;
687 		case L2CAP_MODE_ERTM:
688 		case L2CAP_MODE_STREAMING:
689 			if (!disable_ertm)
690 				break;
691 			/* fall through */
692 		default:
693 			err = -EINVAL;
694 			break;
695 		}
696 
697 		chan->imtu = opts.imtu;
698 		chan->omtu = opts.omtu;
699 		chan->fcs  = opts.fcs;
700 		chan->max_tx = opts.max_tx;
701 		chan->tx_win = opts.txwin_size;
702 		chan->flush_to = opts.flush_to;
703 		break;
704 
705 	case L2CAP_LM:
706 		if (get_user(opt, (u32 __user *) optval)) {
707 			err = -EFAULT;
708 			break;
709 		}
710 
711 		if (opt & L2CAP_LM_FIPS) {
712 			err = -EINVAL;
713 			break;
714 		}
715 
716 		if (opt & L2CAP_LM_AUTH)
717 			chan->sec_level = BT_SECURITY_LOW;
718 		if (opt & L2CAP_LM_ENCRYPT)
719 			chan->sec_level = BT_SECURITY_MEDIUM;
720 		if (opt & L2CAP_LM_SECURE)
721 			chan->sec_level = BT_SECURITY_HIGH;
722 
723 		if (opt & L2CAP_LM_MASTER)
724 			set_bit(FLAG_ROLE_SWITCH, &chan->flags);
725 		else
726 			clear_bit(FLAG_ROLE_SWITCH, &chan->flags);
727 
728 		if (opt & L2CAP_LM_RELIABLE)
729 			set_bit(FLAG_FORCE_RELIABLE, &chan->flags);
730 		else
731 			clear_bit(FLAG_FORCE_RELIABLE, &chan->flags);
732 		break;
733 
734 	default:
735 		err = -ENOPROTOOPT;
736 		break;
737 	}
738 
739 	release_sock(sk);
740 	return err;
741 }
742 
743 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
744 				 char __user *optval, unsigned int optlen)
745 {
746 	struct sock *sk = sock->sk;
747 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
748 	struct bt_security sec;
749 	struct bt_power pwr;
750 	struct l2cap_conn *conn;
751 	int len, err = 0;
752 	u32 opt;
753 
754 	BT_DBG("sk %p", sk);
755 
756 	if (level == SOL_L2CAP)
757 		return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
758 
759 	if (level != SOL_BLUETOOTH)
760 		return -ENOPROTOOPT;
761 
762 	lock_sock(sk);
763 
764 	switch (optname) {
765 	case BT_SECURITY:
766 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
767 		    chan->chan_type != L2CAP_CHAN_FIXED &&
768 		    chan->chan_type != L2CAP_CHAN_RAW) {
769 			err = -EINVAL;
770 			break;
771 		}
772 
773 		sec.level = BT_SECURITY_LOW;
774 
775 		len = min_t(unsigned int, sizeof(sec), optlen);
776 		if (copy_from_user((char *) &sec, optval, len)) {
777 			err = -EFAULT;
778 			break;
779 		}
780 
781 		if (sec.level < BT_SECURITY_LOW ||
782 		    sec.level > BT_SECURITY_HIGH) {
783 			err = -EINVAL;
784 			break;
785 		}
786 
787 		chan->sec_level = sec.level;
788 
789 		if (!chan->conn)
790 			break;
791 
792 		conn = chan->conn;
793 
794 		/*change security for LE channels */
795 		if (chan->scid == L2CAP_CID_ATT) {
796 			if (smp_conn_security(conn->hcon, sec.level))
797 				break;
798 			set_bit(FLAG_PENDING_SECURITY, &chan->flags);
799 			sk->sk_state = BT_CONFIG;
800 			chan->state = BT_CONFIG;
801 
802 		/* or for ACL link */
803 		} else if ((sk->sk_state == BT_CONNECT2 &&
804 			    test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) ||
805 			   sk->sk_state == BT_CONNECTED) {
806 			if (!l2cap_chan_check_security(chan, true))
807 				set_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
808 			else
809 				sk->sk_state_change(sk);
810 		} else {
811 			err = -EINVAL;
812 		}
813 		break;
814 
815 	case BT_DEFER_SETUP:
816 		if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
817 			err = -EINVAL;
818 			break;
819 		}
820 
821 		if (get_user(opt, (u32 __user *) optval)) {
822 			err = -EFAULT;
823 			break;
824 		}
825 
826 		if (opt) {
827 			set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
828 			set_bit(FLAG_DEFER_SETUP, &chan->flags);
829 		} else {
830 			clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
831 			clear_bit(FLAG_DEFER_SETUP, &chan->flags);
832 		}
833 		break;
834 
835 	case BT_FLUSHABLE:
836 		if (get_user(opt, (u32 __user *) optval)) {
837 			err = -EFAULT;
838 			break;
839 		}
840 
841 		if (opt > BT_FLUSHABLE_ON) {
842 			err = -EINVAL;
843 			break;
844 		}
845 
846 		if (opt == BT_FLUSHABLE_OFF) {
847 			conn = chan->conn;
848 			/* proceed further only when we have l2cap_conn and
849 			   No Flush support in the LM */
850 			if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
851 				err = -EINVAL;
852 				break;
853 			}
854 		}
855 
856 		if (opt)
857 			set_bit(FLAG_FLUSHABLE, &chan->flags);
858 		else
859 			clear_bit(FLAG_FLUSHABLE, &chan->flags);
860 		break;
861 
862 	case BT_POWER:
863 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
864 		    chan->chan_type != L2CAP_CHAN_RAW) {
865 			err = -EINVAL;
866 			break;
867 		}
868 
869 		pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
870 
871 		len = min_t(unsigned int, sizeof(pwr), optlen);
872 		if (copy_from_user((char *) &pwr, optval, len)) {
873 			err = -EFAULT;
874 			break;
875 		}
876 
877 		if (pwr.force_active)
878 			set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
879 		else
880 			clear_bit(FLAG_FORCE_ACTIVE, &chan->flags);
881 		break;
882 
883 	case BT_CHANNEL_POLICY:
884 		if (get_user(opt, (u32 __user *) optval)) {
885 			err = -EFAULT;
886 			break;
887 		}
888 
889 		if (opt > BT_CHANNEL_POLICY_AMP_PREFERRED) {
890 			err = -EINVAL;
891 			break;
892 		}
893 
894 		if (chan->mode != L2CAP_MODE_ERTM &&
895 		    chan->mode != L2CAP_MODE_STREAMING) {
896 			err = -EOPNOTSUPP;
897 			break;
898 		}
899 
900 		chan->chan_policy = (u8) opt;
901 
902 		if (sk->sk_state == BT_CONNECTED &&
903 		    chan->move_role == L2CAP_MOVE_ROLE_NONE)
904 			l2cap_move_start(chan);
905 
906 		break;
907 
908 	case BT_SNDMTU:
909 		if (!bdaddr_type_is_le(chan->src_type)) {
910 			err = -EINVAL;
911 			break;
912 		}
913 
914 		/* Setting is not supported as it's the remote side that
915 		 * decides this.
916 		 */
917 		err = -EPERM;
918 		break;
919 
920 	case BT_RCVMTU:
921 		if (!bdaddr_type_is_le(chan->src_type)) {
922 			err = -EINVAL;
923 			break;
924 		}
925 
926 		if (sk->sk_state == BT_CONNECTED) {
927 			err = -EISCONN;
928 			break;
929 		}
930 
931 		if (get_user(opt, (u32 __user *) optval)) {
932 			err = -EFAULT;
933 			break;
934 		}
935 
936 		chan->imtu = opt;
937 		break;
938 
939 	default:
940 		err = -ENOPROTOOPT;
941 		break;
942 	}
943 
944 	release_sock(sk);
945 	return err;
946 }
947 
948 static int l2cap_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
949 			      struct msghdr *msg, size_t len)
950 {
951 	struct sock *sk = sock->sk;
952 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
953 	int err;
954 
955 	BT_DBG("sock %p, sk %p", sock, sk);
956 
957 	err = sock_error(sk);
958 	if (err)
959 		return err;
960 
961 	if (msg->msg_flags & MSG_OOB)
962 		return -EOPNOTSUPP;
963 
964 	if (sk->sk_state != BT_CONNECTED)
965 		return -ENOTCONN;
966 
967 	lock_sock(sk);
968 	err = bt_sock_wait_ready(sk, msg->msg_flags);
969 	release_sock(sk);
970 	if (err)
971 		return err;
972 
973 	l2cap_chan_lock(chan);
974 	err = l2cap_chan_send(chan, msg, len);
975 	l2cap_chan_unlock(chan);
976 
977 	return err;
978 }
979 
980 static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
981 			      struct msghdr *msg, size_t len, int flags)
982 {
983 	struct sock *sk = sock->sk;
984 	struct l2cap_pinfo *pi = l2cap_pi(sk);
985 	int err;
986 
987 	lock_sock(sk);
988 
989 	if (sk->sk_state == BT_CONNECT2 && test_bit(BT_SK_DEFER_SETUP,
990 						    &bt_sk(sk)->flags)) {
991 		if (bdaddr_type_is_le(pi->chan->src_type)) {
992 			sk->sk_state = BT_CONNECTED;
993 			pi->chan->state = BT_CONNECTED;
994 			__l2cap_le_connect_rsp_defer(pi->chan);
995 		} else {
996 			sk->sk_state = BT_CONFIG;
997 			pi->chan->state = BT_CONFIG;
998 			__l2cap_connect_rsp_defer(pi->chan);
999 		}
1000 
1001 		err = 0;
1002 		goto done;
1003 	}
1004 
1005 	release_sock(sk);
1006 
1007 	if (sock->type == SOCK_STREAM)
1008 		err = bt_sock_stream_recvmsg(iocb, sock, msg, len, flags);
1009 	else
1010 		err = bt_sock_recvmsg(iocb, sock, msg, len, flags);
1011 
1012 	if (pi->chan->mode != L2CAP_MODE_ERTM)
1013 		return err;
1014 
1015 	/* Attempt to put pending rx data in the socket buffer */
1016 
1017 	lock_sock(sk);
1018 
1019 	if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state))
1020 		goto done;
1021 
1022 	if (pi->rx_busy_skb) {
1023 		if (!sock_queue_rcv_skb(sk, pi->rx_busy_skb))
1024 			pi->rx_busy_skb = NULL;
1025 		else
1026 			goto done;
1027 	}
1028 
1029 	/* Restore data flow when half of the receive buffer is
1030 	 * available.  This avoids resending large numbers of
1031 	 * frames.
1032 	 */
1033 	if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf >> 1)
1034 		l2cap_chan_busy(pi->chan, 0);
1035 
1036 done:
1037 	release_sock(sk);
1038 	return err;
1039 }
1040 
1041 /* Kill socket (only if zapped and orphan)
1042  * Must be called on unlocked socket.
1043  */
1044 static void l2cap_sock_kill(struct sock *sk)
1045 {
1046 	if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
1047 		return;
1048 
1049 	BT_DBG("sk %p state %s", sk, state_to_string(sk->sk_state));
1050 
1051 	/* Kill poor orphan */
1052 
1053 	l2cap_chan_put(l2cap_pi(sk)->chan);
1054 	sock_set_flag(sk, SOCK_DEAD);
1055 	sock_put(sk);
1056 }
1057 
1058 static int __l2cap_wait_ack(struct sock *sk)
1059 {
1060 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
1061 	DECLARE_WAITQUEUE(wait, current);
1062 	int err = 0;
1063 	int timeo = HZ/5;
1064 
1065 	add_wait_queue(sk_sleep(sk), &wait);
1066 	set_current_state(TASK_INTERRUPTIBLE);
1067 	while (chan->unacked_frames > 0 && chan->conn) {
1068 		if (!timeo)
1069 			timeo = HZ/5;
1070 
1071 		if (signal_pending(current)) {
1072 			err = sock_intr_errno(timeo);
1073 			break;
1074 		}
1075 
1076 		release_sock(sk);
1077 		timeo = schedule_timeout(timeo);
1078 		lock_sock(sk);
1079 		set_current_state(TASK_INTERRUPTIBLE);
1080 
1081 		err = sock_error(sk);
1082 		if (err)
1083 			break;
1084 	}
1085 	set_current_state(TASK_RUNNING);
1086 	remove_wait_queue(sk_sleep(sk), &wait);
1087 	return err;
1088 }
1089 
1090 static int l2cap_sock_shutdown(struct socket *sock, int how)
1091 {
1092 	struct sock *sk = sock->sk;
1093 	struct l2cap_chan *chan;
1094 	struct l2cap_conn *conn;
1095 	int err = 0;
1096 
1097 	BT_DBG("sock %p, sk %p", sock, sk);
1098 
1099 	if (!sk)
1100 		return 0;
1101 
1102 	chan = l2cap_pi(sk)->chan;
1103 	conn = chan->conn;
1104 
1105 	BT_DBG("chan %p state %s", chan, state_to_string(chan->state));
1106 
1107 	if (conn)
1108 		mutex_lock(&conn->chan_lock);
1109 
1110 	l2cap_chan_lock(chan);
1111 	lock_sock(sk);
1112 
1113 	if (!sk->sk_shutdown) {
1114 		if (chan->mode == L2CAP_MODE_ERTM)
1115 			err = __l2cap_wait_ack(sk);
1116 
1117 		sk->sk_shutdown = SHUTDOWN_MASK;
1118 
1119 		release_sock(sk);
1120 		l2cap_chan_close(chan, 0);
1121 		lock_sock(sk);
1122 
1123 		if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
1124 		    !(current->flags & PF_EXITING))
1125 			err = bt_sock_wait_state(sk, BT_CLOSED,
1126 						 sk->sk_lingertime);
1127 	}
1128 
1129 	if (!err && sk->sk_err)
1130 		err = -sk->sk_err;
1131 
1132 	release_sock(sk);
1133 	l2cap_chan_unlock(chan);
1134 
1135 	if (conn)
1136 		mutex_unlock(&conn->chan_lock);
1137 
1138 	return err;
1139 }
1140 
1141 static int l2cap_sock_release(struct socket *sock)
1142 {
1143 	struct sock *sk = sock->sk;
1144 	int err;
1145 
1146 	BT_DBG("sock %p, sk %p", sock, sk);
1147 
1148 	if (!sk)
1149 		return 0;
1150 
1151 	bt_sock_unlink(&l2cap_sk_list, sk);
1152 
1153 	err = l2cap_sock_shutdown(sock, 2);
1154 
1155 	sock_orphan(sk);
1156 	l2cap_sock_kill(sk);
1157 	return err;
1158 }
1159 
1160 static void l2cap_sock_cleanup_listen(struct sock *parent)
1161 {
1162 	struct sock *sk;
1163 
1164 	BT_DBG("parent %p state %s", parent,
1165 	       state_to_string(parent->sk_state));
1166 
1167 	/* Close not yet accepted channels */
1168 	while ((sk = bt_accept_dequeue(parent, NULL))) {
1169 		struct l2cap_chan *chan = l2cap_pi(sk)->chan;
1170 
1171 		BT_DBG("child chan %p state %s", chan,
1172 		       state_to_string(chan->state));
1173 
1174 		l2cap_chan_lock(chan);
1175 		__clear_chan_timer(chan);
1176 		l2cap_chan_close(chan, ECONNRESET);
1177 		l2cap_chan_unlock(chan);
1178 
1179 		l2cap_sock_kill(sk);
1180 	}
1181 }
1182 
1183 static struct l2cap_chan *l2cap_sock_new_connection_cb(struct l2cap_chan *chan)
1184 {
1185 	struct sock *sk, *parent = chan->data;
1186 
1187 	lock_sock(parent);
1188 
1189 	/* Check for backlog size */
1190 	if (sk_acceptq_is_full(parent)) {
1191 		BT_DBG("backlog full %d", parent->sk_ack_backlog);
1192 		release_sock(parent);
1193 		return NULL;
1194 	}
1195 
1196 	sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
1197 			      GFP_ATOMIC);
1198 	if (!sk) {
1199 		release_sock(parent);
1200 		return NULL;
1201         }
1202 
1203 	bt_sock_reclassify_lock(sk, BTPROTO_L2CAP);
1204 
1205 	l2cap_sock_init(sk, parent);
1206 
1207 	bt_accept_enqueue(parent, sk);
1208 
1209 	release_sock(parent);
1210 
1211 	return l2cap_pi(sk)->chan;
1212 }
1213 
1214 static int l2cap_sock_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb)
1215 {
1216 	struct sock *sk = chan->data;
1217 	int err;
1218 
1219 	lock_sock(sk);
1220 
1221 	if (l2cap_pi(sk)->rx_busy_skb) {
1222 		err = -ENOMEM;
1223 		goto done;
1224 	}
1225 
1226 	err = sock_queue_rcv_skb(sk, skb);
1227 
1228 	/* For ERTM, handle one skb that doesn't fit into the recv
1229 	 * buffer.  This is important to do because the data frames
1230 	 * have already been acked, so the skb cannot be discarded.
1231 	 *
1232 	 * Notify the l2cap core that the buffer is full, so the
1233 	 * LOCAL_BUSY state is entered and no more frames are
1234 	 * acked and reassembled until there is buffer space
1235 	 * available.
1236 	 */
1237 	if (err < 0 && chan->mode == L2CAP_MODE_ERTM) {
1238 		l2cap_pi(sk)->rx_busy_skb = skb;
1239 		l2cap_chan_busy(chan, 1);
1240 		err = 0;
1241 	}
1242 
1243 done:
1244 	release_sock(sk);
1245 
1246 	return err;
1247 }
1248 
1249 static void l2cap_sock_close_cb(struct l2cap_chan *chan)
1250 {
1251 	struct sock *sk = chan->data;
1252 
1253 	l2cap_sock_kill(sk);
1254 }
1255 
1256 static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
1257 {
1258 	struct sock *sk = chan->data;
1259 	struct sock *parent;
1260 
1261 	BT_DBG("chan %p state %s", chan, state_to_string(chan->state));
1262 
1263 	/* This callback can be called both for server (BT_LISTEN)
1264 	 * sockets as well as "normal" ones. To avoid lockdep warnings
1265 	 * with child socket locking (through l2cap_sock_cleanup_listen)
1266 	 * we need separation into separate nesting levels. The simplest
1267 	 * way to accomplish this is to inherit the nesting level used
1268 	 * for the channel.
1269 	 */
1270 	lock_sock_nested(sk, atomic_read(&chan->nesting));
1271 
1272 	parent = bt_sk(sk)->parent;
1273 
1274 	sock_set_flag(sk, SOCK_ZAPPED);
1275 
1276 	switch (chan->state) {
1277 	case BT_OPEN:
1278 	case BT_BOUND:
1279 	case BT_CLOSED:
1280 		break;
1281 	case BT_LISTEN:
1282 		l2cap_sock_cleanup_listen(sk);
1283 		sk->sk_state = BT_CLOSED;
1284 		chan->state = BT_CLOSED;
1285 
1286 		break;
1287 	default:
1288 		sk->sk_state = BT_CLOSED;
1289 		chan->state = BT_CLOSED;
1290 
1291 		sk->sk_err = err;
1292 
1293 		if (parent) {
1294 			bt_accept_unlink(sk);
1295 			parent->sk_data_ready(parent);
1296 		} else {
1297 			sk->sk_state_change(sk);
1298 		}
1299 
1300 		break;
1301 	}
1302 
1303 	release_sock(sk);
1304 }
1305 
1306 static void l2cap_sock_state_change_cb(struct l2cap_chan *chan, int state,
1307 				       int err)
1308 {
1309 	struct sock *sk = chan->data;
1310 
1311 	sk->sk_state = state;
1312 
1313 	if (err)
1314 		sk->sk_err = err;
1315 }
1316 
1317 static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan,
1318 					       unsigned long hdr_len,
1319 					       unsigned long len, int nb)
1320 {
1321 	struct sock *sk = chan->data;
1322 	struct sk_buff *skb;
1323 	int err;
1324 
1325 	l2cap_chan_unlock(chan);
1326 	skb = bt_skb_send_alloc(sk, hdr_len + len, nb, &err);
1327 	l2cap_chan_lock(chan);
1328 
1329 	if (!skb)
1330 		return ERR_PTR(err);
1331 
1332 	skb->priority = sk->sk_priority;
1333 
1334 	bt_cb(skb)->chan = chan;
1335 
1336 	return skb;
1337 }
1338 
1339 static void l2cap_sock_ready_cb(struct l2cap_chan *chan)
1340 {
1341 	struct sock *sk = chan->data;
1342 	struct sock *parent;
1343 
1344 	lock_sock(sk);
1345 
1346 	parent = bt_sk(sk)->parent;
1347 
1348 	BT_DBG("sk %p, parent %p", sk, parent);
1349 
1350 	sk->sk_state = BT_CONNECTED;
1351 	sk->sk_state_change(sk);
1352 
1353 	if (parent)
1354 		parent->sk_data_ready(parent);
1355 
1356 	release_sock(sk);
1357 }
1358 
1359 static void l2cap_sock_defer_cb(struct l2cap_chan *chan)
1360 {
1361 	struct sock *parent, *sk = chan->data;
1362 
1363 	lock_sock(sk);
1364 
1365 	parent = bt_sk(sk)->parent;
1366 	if (parent)
1367 		parent->sk_data_ready(parent);
1368 
1369 	release_sock(sk);
1370 }
1371 
1372 static void l2cap_sock_resume_cb(struct l2cap_chan *chan)
1373 {
1374 	struct sock *sk = chan->data;
1375 
1376 	if (test_and_clear_bit(FLAG_PENDING_SECURITY, &chan->flags)) {
1377 		sk->sk_state = BT_CONNECTED;
1378 		chan->state = BT_CONNECTED;
1379 	}
1380 
1381 	clear_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
1382 	sk->sk_state_change(sk);
1383 }
1384 
1385 static void l2cap_sock_set_shutdown_cb(struct l2cap_chan *chan)
1386 {
1387 	struct sock *sk = chan->data;
1388 
1389 	lock_sock(sk);
1390 	sk->sk_shutdown = SHUTDOWN_MASK;
1391 	release_sock(sk);
1392 }
1393 
1394 static long l2cap_sock_get_sndtimeo_cb(struct l2cap_chan *chan)
1395 {
1396 	struct sock *sk = chan->data;
1397 
1398 	return sk->sk_sndtimeo;
1399 }
1400 
1401 static void l2cap_sock_suspend_cb(struct l2cap_chan *chan)
1402 {
1403 	struct sock *sk = chan->data;
1404 
1405 	set_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
1406 	sk->sk_state_change(sk);
1407 }
1408 
1409 static const struct l2cap_ops l2cap_chan_ops = {
1410 	.name			= "L2CAP Socket Interface",
1411 	.new_connection		= l2cap_sock_new_connection_cb,
1412 	.recv			= l2cap_sock_recv_cb,
1413 	.close			= l2cap_sock_close_cb,
1414 	.teardown		= l2cap_sock_teardown_cb,
1415 	.state_change		= l2cap_sock_state_change_cb,
1416 	.ready			= l2cap_sock_ready_cb,
1417 	.defer			= l2cap_sock_defer_cb,
1418 	.resume			= l2cap_sock_resume_cb,
1419 	.suspend		= l2cap_sock_suspend_cb,
1420 	.set_shutdown		= l2cap_sock_set_shutdown_cb,
1421 	.get_sndtimeo		= l2cap_sock_get_sndtimeo_cb,
1422 	.alloc_skb		= l2cap_sock_alloc_skb_cb,
1423 };
1424 
1425 static void l2cap_sock_destruct(struct sock *sk)
1426 {
1427 	BT_DBG("sk %p", sk);
1428 
1429 	if (l2cap_pi(sk)->chan)
1430 		l2cap_chan_put(l2cap_pi(sk)->chan);
1431 
1432 	if (l2cap_pi(sk)->rx_busy_skb) {
1433 		kfree_skb(l2cap_pi(sk)->rx_busy_skb);
1434 		l2cap_pi(sk)->rx_busy_skb = NULL;
1435 	}
1436 
1437 	skb_queue_purge(&sk->sk_receive_queue);
1438 	skb_queue_purge(&sk->sk_write_queue);
1439 }
1440 
1441 static void l2cap_skb_msg_name(struct sk_buff *skb, void *msg_name,
1442 			       int *msg_namelen)
1443 {
1444 	DECLARE_SOCKADDR(struct sockaddr_l2 *, la, msg_name);
1445 
1446 	memset(la, 0, sizeof(struct sockaddr_l2));
1447 	la->l2_family = AF_BLUETOOTH;
1448 	la->l2_psm = bt_cb(skb)->psm;
1449 	bacpy(&la->l2_bdaddr, &bt_cb(skb)->bdaddr);
1450 
1451 	*msg_namelen = sizeof(struct sockaddr_l2);
1452 }
1453 
1454 static void l2cap_sock_init(struct sock *sk, struct sock *parent)
1455 {
1456 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
1457 
1458 	BT_DBG("sk %p", sk);
1459 
1460 	if (parent) {
1461 		struct l2cap_chan *pchan = l2cap_pi(parent)->chan;
1462 
1463 		sk->sk_type = parent->sk_type;
1464 		bt_sk(sk)->flags = bt_sk(parent)->flags;
1465 
1466 		chan->chan_type = pchan->chan_type;
1467 		chan->imtu = pchan->imtu;
1468 		chan->omtu = pchan->omtu;
1469 		chan->conf_state = pchan->conf_state;
1470 		chan->mode = pchan->mode;
1471 		chan->fcs  = pchan->fcs;
1472 		chan->max_tx = pchan->max_tx;
1473 		chan->tx_win = pchan->tx_win;
1474 		chan->tx_win_max = pchan->tx_win_max;
1475 		chan->sec_level = pchan->sec_level;
1476 		chan->flags = pchan->flags;
1477 		chan->tx_credits = pchan->tx_credits;
1478 		chan->rx_credits = pchan->rx_credits;
1479 
1480 		if (chan->chan_type == L2CAP_CHAN_FIXED) {
1481 			chan->scid = pchan->scid;
1482 			chan->dcid = pchan->scid;
1483 		}
1484 
1485 		security_sk_clone(parent, sk);
1486 	} else {
1487 		switch (sk->sk_type) {
1488 		case SOCK_RAW:
1489 			chan->chan_type = L2CAP_CHAN_RAW;
1490 			break;
1491 		case SOCK_DGRAM:
1492 			chan->chan_type = L2CAP_CHAN_CONN_LESS;
1493 			bt_sk(sk)->skb_msg_name = l2cap_skb_msg_name;
1494 			break;
1495 		case SOCK_SEQPACKET:
1496 		case SOCK_STREAM:
1497 			chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
1498 			break;
1499 		}
1500 
1501 		chan->imtu = L2CAP_DEFAULT_MTU;
1502 		chan->omtu = 0;
1503 		if (!disable_ertm && sk->sk_type == SOCK_STREAM) {
1504 			chan->mode = L2CAP_MODE_ERTM;
1505 			set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
1506 		} else {
1507 			chan->mode = L2CAP_MODE_BASIC;
1508 		}
1509 
1510 		l2cap_chan_set_defaults(chan);
1511 	}
1512 
1513 	/* Default config options */
1514 	chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
1515 
1516 	chan->data = sk;
1517 	chan->ops = &l2cap_chan_ops;
1518 }
1519 
1520 static struct proto l2cap_proto = {
1521 	.name		= "L2CAP",
1522 	.owner		= THIS_MODULE,
1523 	.obj_size	= sizeof(struct l2cap_pinfo)
1524 };
1525 
1526 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
1527 				     int proto, gfp_t prio)
1528 {
1529 	struct sock *sk;
1530 	struct l2cap_chan *chan;
1531 
1532 	sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto);
1533 	if (!sk)
1534 		return NULL;
1535 
1536 	sock_init_data(sock, sk);
1537 	INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1538 
1539 	sk->sk_destruct = l2cap_sock_destruct;
1540 	sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
1541 
1542 	sock_reset_flag(sk, SOCK_ZAPPED);
1543 
1544 	sk->sk_protocol = proto;
1545 	sk->sk_state = BT_OPEN;
1546 
1547 	chan = l2cap_chan_create();
1548 	if (!chan) {
1549 		sk_free(sk);
1550 		return NULL;
1551 	}
1552 
1553 	l2cap_chan_hold(chan);
1554 
1555 	l2cap_pi(sk)->chan = chan;
1556 
1557 	return sk;
1558 }
1559 
1560 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1561 			     int kern)
1562 {
1563 	struct sock *sk;
1564 
1565 	BT_DBG("sock %p", sock);
1566 
1567 	sock->state = SS_UNCONNECTED;
1568 
1569 	if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1570 	    sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1571 		return -ESOCKTNOSUPPORT;
1572 
1573 	if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1574 		return -EPERM;
1575 
1576 	sock->ops = &l2cap_sock_ops;
1577 
1578 	sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC);
1579 	if (!sk)
1580 		return -ENOMEM;
1581 
1582 	l2cap_sock_init(sk, NULL);
1583 	bt_sock_link(&l2cap_sk_list, sk);
1584 	return 0;
1585 }
1586 
1587 static const struct proto_ops l2cap_sock_ops = {
1588 	.family		= PF_BLUETOOTH,
1589 	.owner		= THIS_MODULE,
1590 	.release	= l2cap_sock_release,
1591 	.bind		= l2cap_sock_bind,
1592 	.connect	= l2cap_sock_connect,
1593 	.listen		= l2cap_sock_listen,
1594 	.accept		= l2cap_sock_accept,
1595 	.getname	= l2cap_sock_getname,
1596 	.sendmsg	= l2cap_sock_sendmsg,
1597 	.recvmsg	= l2cap_sock_recvmsg,
1598 	.poll		= bt_sock_poll,
1599 	.ioctl		= bt_sock_ioctl,
1600 	.mmap		= sock_no_mmap,
1601 	.socketpair	= sock_no_socketpair,
1602 	.shutdown	= l2cap_sock_shutdown,
1603 	.setsockopt	= l2cap_sock_setsockopt,
1604 	.getsockopt	= l2cap_sock_getsockopt
1605 };
1606 
1607 static const struct net_proto_family l2cap_sock_family_ops = {
1608 	.family	= PF_BLUETOOTH,
1609 	.owner	= THIS_MODULE,
1610 	.create	= l2cap_sock_create,
1611 };
1612 
1613 int __init l2cap_init_sockets(void)
1614 {
1615 	int err;
1616 
1617 	err = proto_register(&l2cap_proto, 0);
1618 	if (err < 0)
1619 		return err;
1620 
1621 	err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1622 	if (err < 0) {
1623 		BT_ERR("L2CAP socket registration failed");
1624 		goto error;
1625 	}
1626 
1627 	err = bt_procfs_init(&init_net, "l2cap", &l2cap_sk_list,
1628 			     NULL);
1629 	if (err < 0) {
1630 		BT_ERR("Failed to create L2CAP proc file");
1631 		bt_sock_unregister(BTPROTO_L2CAP);
1632 		goto error;
1633 	}
1634 
1635 	BT_INFO("L2CAP socket layer initialized");
1636 
1637 	return 0;
1638 
1639 error:
1640 	proto_unregister(&l2cap_proto);
1641 	return err;
1642 }
1643 
1644 void l2cap_cleanup_sockets(void)
1645 {
1646 	bt_procfs_cleanup(&init_net, "l2cap");
1647 	bt_sock_unregister(BTPROTO_L2CAP);
1648 	proto_unregister(&l2cap_proto);
1649 }
1650