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