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