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