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