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