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