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