Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
[firefly-linux-kernel-4.4.55.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                     !(current->flags & PF_EXITING))
892                         err = bt_sock_wait_state(sk, BT_CLOSED,
893                                                  sk->sk_lingertime);
894         }
895
896         if (!err && sk->sk_err)
897                 err = -sk->sk_err;
898
899         release_sock(sk);
900         l2cap_chan_unlock(chan);
901
902         if (conn)
903                 mutex_unlock(&conn->chan_lock);
904
905         return err;
906 }
907
908 static int l2cap_sock_release(struct socket *sock)
909 {
910         struct sock *sk = sock->sk;
911         int err;
912
913         BT_DBG("sock %p, sk %p", sock, sk);
914
915         if (!sk)
916                 return 0;
917
918         bt_sock_unlink(&l2cap_sk_list, sk);
919
920         err = l2cap_sock_shutdown(sock, 2);
921
922         sock_orphan(sk);
923         l2cap_sock_kill(sk);
924         return err;
925 }
926
927 static void l2cap_sock_cleanup_listen(struct sock *parent)
928 {
929         struct sock *sk;
930
931         BT_DBG("parent %p", parent);
932
933         /* Close not yet accepted channels */
934         while ((sk = bt_accept_dequeue(parent, NULL))) {
935                 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
936
937                 l2cap_chan_lock(chan);
938                 __clear_chan_timer(chan);
939                 l2cap_chan_close(chan, ECONNRESET);
940                 l2cap_chan_unlock(chan);
941
942                 l2cap_sock_kill(sk);
943         }
944 }
945
946 static struct l2cap_chan *l2cap_sock_new_connection_cb(struct l2cap_chan *chan)
947 {
948         struct sock *sk, *parent = chan->data;
949
950         /* Check for backlog size */
951         if (sk_acceptq_is_full(parent)) {
952                 BT_DBG("backlog full %d", parent->sk_ack_backlog);
953                 release_sock(parent);
954                 return NULL;
955         }
956
957         sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
958                               GFP_ATOMIC);
959         if (!sk) {
960                 release_sock(parent);
961                 return NULL;
962         }
963
964         bt_sock_reclassify_lock(sk, BTPROTO_L2CAP);
965
966         l2cap_sock_init(sk, parent);
967
968         bt_accept_enqueue(parent, sk);
969
970         return l2cap_pi(sk)->chan;
971 }
972
973 static int l2cap_sock_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb)
974 {
975         int err;
976         struct sock *sk = chan->data;
977         struct l2cap_pinfo *pi = l2cap_pi(sk);
978
979         lock_sock(sk);
980
981         if (pi->rx_busy_skb) {
982                 err = -ENOMEM;
983                 goto done;
984         }
985
986         err = sock_queue_rcv_skb(sk, skb);
987
988         /* For ERTM, handle one skb that doesn't fit into the recv
989          * buffer.  This is important to do because the data frames
990          * have already been acked, so the skb cannot be discarded.
991          *
992          * Notify the l2cap core that the buffer is full, so the
993          * LOCAL_BUSY state is entered and no more frames are
994          * acked and reassembled until there is buffer space
995          * available.
996          */
997         if (err < 0 && pi->chan->mode == L2CAP_MODE_ERTM) {
998                 pi->rx_busy_skb = skb;
999                 l2cap_chan_busy(pi->chan, 1);
1000                 err = 0;
1001         }
1002
1003 done:
1004         release_sock(sk);
1005
1006         return err;
1007 }
1008
1009 static void l2cap_sock_close_cb(struct l2cap_chan *chan)
1010 {
1011         struct sock *sk = chan->data;
1012
1013         l2cap_sock_kill(sk);
1014 }
1015
1016 static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
1017 {
1018         struct sock *sk = chan->data;
1019         struct sock *parent;
1020
1021         lock_sock(sk);
1022
1023         parent = bt_sk(sk)->parent;
1024
1025         sock_set_flag(sk, SOCK_ZAPPED);
1026
1027         switch (chan->state) {
1028         case BT_OPEN:
1029         case BT_BOUND:
1030         case BT_CLOSED:
1031                 break;
1032         case BT_LISTEN:
1033                 l2cap_sock_cleanup_listen(sk);
1034                 sk->sk_state = BT_CLOSED;
1035                 chan->state = BT_CLOSED;
1036
1037                 break;
1038         default:
1039                 sk->sk_state = BT_CLOSED;
1040                 chan->state = BT_CLOSED;
1041
1042                 sk->sk_err = err;
1043
1044                 if (parent) {
1045                         bt_accept_unlink(sk);
1046                         parent->sk_data_ready(parent, 0);
1047                 } else {
1048                         sk->sk_state_change(sk);
1049                 }
1050
1051                 break;
1052         }
1053
1054         release_sock(sk);
1055 }
1056
1057 static void l2cap_sock_state_change_cb(struct l2cap_chan *chan, int state)
1058 {
1059         struct sock *sk = chan->data;
1060
1061         sk->sk_state = state;
1062 }
1063
1064 static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan,
1065                                                unsigned long len, int nb)
1066 {
1067         struct sk_buff *skb;
1068         int err;
1069
1070         l2cap_chan_unlock(chan);
1071         skb = bt_skb_send_alloc(chan->sk, len, nb, &err);
1072         l2cap_chan_lock(chan);
1073
1074         if (!skb)
1075                 return ERR_PTR(err);
1076
1077         return skb;
1078 }
1079
1080 static void l2cap_sock_ready_cb(struct l2cap_chan *chan)
1081 {
1082         struct sock *sk = chan->data;
1083         struct sock *parent;
1084
1085         lock_sock(sk);
1086
1087         parent = bt_sk(sk)->parent;
1088
1089         BT_DBG("sk %p, parent %p", sk, parent);
1090
1091         sk->sk_state = BT_CONNECTED;
1092         sk->sk_state_change(sk);
1093
1094         if (parent)
1095                 parent->sk_data_ready(parent, 0);
1096
1097         release_sock(sk);
1098 }
1099
1100 static void l2cap_sock_defer_cb(struct l2cap_chan *chan)
1101 {
1102         struct sock *sk = chan->data;
1103         struct sock *parent = bt_sk(sk)->parent;
1104
1105         if (parent)
1106                 parent->sk_data_ready(parent, 0);
1107 }
1108
1109 static struct l2cap_ops l2cap_chan_ops = {
1110         .name           = "L2CAP Socket Interface",
1111         .new_connection = l2cap_sock_new_connection_cb,
1112         .recv           = l2cap_sock_recv_cb,
1113         .close          = l2cap_sock_close_cb,
1114         .teardown       = l2cap_sock_teardown_cb,
1115         .state_change   = l2cap_sock_state_change_cb,
1116         .ready          = l2cap_sock_ready_cb,
1117         .defer          = l2cap_sock_defer_cb,
1118         .alloc_skb      = l2cap_sock_alloc_skb_cb,
1119 };
1120
1121 static void l2cap_sock_destruct(struct sock *sk)
1122 {
1123         BT_DBG("sk %p", sk);
1124
1125         if (l2cap_pi(sk)->chan)
1126                 l2cap_chan_put(l2cap_pi(sk)->chan);
1127         if (l2cap_pi(sk)->rx_busy_skb) {
1128                 kfree_skb(l2cap_pi(sk)->rx_busy_skb);
1129                 l2cap_pi(sk)->rx_busy_skb = NULL;
1130         }
1131
1132         skb_queue_purge(&sk->sk_receive_queue);
1133         skb_queue_purge(&sk->sk_write_queue);
1134 }
1135
1136 static void l2cap_sock_init(struct sock *sk, struct sock *parent)
1137 {
1138         struct l2cap_pinfo *pi = l2cap_pi(sk);
1139         struct l2cap_chan *chan = pi->chan;
1140
1141         BT_DBG("sk %p", sk);
1142
1143         if (parent) {
1144                 struct l2cap_chan *pchan = l2cap_pi(parent)->chan;
1145
1146                 sk->sk_type = parent->sk_type;
1147                 bt_sk(sk)->flags = bt_sk(parent)->flags;
1148
1149                 chan->chan_type = pchan->chan_type;
1150                 chan->imtu = pchan->imtu;
1151                 chan->omtu = pchan->omtu;
1152                 chan->conf_state = pchan->conf_state;
1153                 chan->mode = pchan->mode;
1154                 chan->fcs  = pchan->fcs;
1155                 chan->max_tx = pchan->max_tx;
1156                 chan->tx_win = pchan->tx_win;
1157                 chan->tx_win_max = pchan->tx_win_max;
1158                 chan->sec_level = pchan->sec_level;
1159                 chan->flags = pchan->flags;
1160
1161                 security_sk_clone(parent, sk);
1162         } else {
1163
1164                 switch (sk->sk_type) {
1165                 case SOCK_RAW:
1166                         chan->chan_type = L2CAP_CHAN_RAW;
1167                         break;
1168                 case SOCK_DGRAM:
1169                         chan->chan_type = L2CAP_CHAN_CONN_LESS;
1170                         break;
1171                 case SOCK_SEQPACKET:
1172                 case SOCK_STREAM:
1173                         chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
1174                         break;
1175                 }
1176
1177                 chan->imtu = L2CAP_DEFAULT_MTU;
1178                 chan->omtu = 0;
1179                 if (!disable_ertm && sk->sk_type == SOCK_STREAM) {
1180                         chan->mode = L2CAP_MODE_ERTM;
1181                         set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
1182                 } else {
1183                         chan->mode = L2CAP_MODE_BASIC;
1184                 }
1185
1186                 l2cap_chan_set_defaults(chan);
1187         }
1188
1189         /* Default config options */
1190         chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
1191
1192         chan->data = sk;
1193         chan->ops = &l2cap_chan_ops;
1194 }
1195
1196 static struct proto l2cap_proto = {
1197         .name           = "L2CAP",
1198         .owner          = THIS_MODULE,
1199         .obj_size       = sizeof(struct l2cap_pinfo)
1200 };
1201
1202 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
1203                                      int proto, gfp_t prio)
1204 {
1205         struct sock *sk;
1206         struct l2cap_chan *chan;
1207
1208         sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto);
1209         if (!sk)
1210                 return NULL;
1211
1212         sock_init_data(sock, sk);
1213         INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1214
1215         sk->sk_destruct = l2cap_sock_destruct;
1216         sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
1217
1218         sock_reset_flag(sk, SOCK_ZAPPED);
1219
1220         sk->sk_protocol = proto;
1221         sk->sk_state = BT_OPEN;
1222
1223         chan = l2cap_chan_create();
1224         if (!chan) {
1225                 sk_free(sk);
1226                 return NULL;
1227         }
1228
1229         l2cap_chan_hold(chan);
1230
1231         chan->sk = sk;
1232
1233         l2cap_pi(sk)->chan = chan;
1234
1235         return sk;
1236 }
1237
1238 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1239                              int kern)
1240 {
1241         struct sock *sk;
1242
1243         BT_DBG("sock %p", sock);
1244
1245         sock->state = SS_UNCONNECTED;
1246
1247         if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1248             sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1249                 return -ESOCKTNOSUPPORT;
1250
1251         if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1252                 return -EPERM;
1253
1254         sock->ops = &l2cap_sock_ops;
1255
1256         sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC);
1257         if (!sk)
1258                 return -ENOMEM;
1259
1260         l2cap_sock_init(sk, NULL);
1261         bt_sock_link(&l2cap_sk_list, sk);
1262         return 0;
1263 }
1264
1265 static const struct proto_ops l2cap_sock_ops = {
1266         .family         = PF_BLUETOOTH,
1267         .owner          = THIS_MODULE,
1268         .release        = l2cap_sock_release,
1269         .bind           = l2cap_sock_bind,
1270         .connect        = l2cap_sock_connect,
1271         .listen         = l2cap_sock_listen,
1272         .accept         = l2cap_sock_accept,
1273         .getname        = l2cap_sock_getname,
1274         .sendmsg        = l2cap_sock_sendmsg,
1275         .recvmsg        = l2cap_sock_recvmsg,
1276         .poll           = bt_sock_poll,
1277         .ioctl          = bt_sock_ioctl,
1278         .mmap           = sock_no_mmap,
1279         .socketpair     = sock_no_socketpair,
1280         .shutdown       = l2cap_sock_shutdown,
1281         .setsockopt     = l2cap_sock_setsockopt,
1282         .getsockopt     = l2cap_sock_getsockopt
1283 };
1284
1285 static const struct net_proto_family l2cap_sock_family_ops = {
1286         .family = PF_BLUETOOTH,
1287         .owner  = THIS_MODULE,
1288         .create = l2cap_sock_create,
1289 };
1290
1291 int __init l2cap_init_sockets(void)
1292 {
1293         int err;
1294
1295         err = proto_register(&l2cap_proto, 0);
1296         if (err < 0)
1297                 return err;
1298
1299         err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1300         if (err < 0) {
1301                 BT_ERR("L2CAP socket registration failed");
1302                 goto error;
1303         }
1304
1305         err = bt_procfs_init(&init_net, "l2cap", &l2cap_sk_list,
1306                              NULL);
1307         if (err < 0) {
1308                 BT_ERR("Failed to create L2CAP proc file");
1309                 bt_sock_unregister(BTPROTO_L2CAP);
1310                 goto error;
1311         }
1312
1313         BT_INFO("L2CAP socket layer initialized");
1314
1315         return 0;
1316
1317 error:
1318         proto_unregister(&l2cap_proto);
1319         return err;
1320 }
1321
1322 void l2cap_cleanup_sockets(void)
1323 {
1324         bt_procfs_cleanup(&init_net, "l2cap");
1325         bt_sock_unregister(BTPROTO_L2CAP);
1326         proto_unregister(&l2cap_proto);
1327 }