]> Pileus Git - ~andy/linux/blob - net/bluetooth/l2cap_sock.c
Bluetooth: Extend state_change() call to report errors too
[~andy/linux] / net / bluetooth / l2cap_sock.c
1 /*
2    BlueZ - Bluetooth protocol stack for Linux
3    Copyright (C) 2000-2001 Qualcomm Incorporated
4    Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org>
5    Copyright (C) 2010 Google Inc.
6    Copyright (C) 2011 ProFUSION Embedded Systems
7
8    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
9
10    This program is free software; you can redistribute it and/or modify
11    it under the terms of the GNU General Public License version 2 as
12    published by the Free Software Foundation;
13
14    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
17    IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
18    CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
19    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
21    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22
23    ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
24    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
25    SOFTWARE IS DISCLAIMED.
26 */
27
28 /* Bluetooth L2CAP sockets. */
29
30 #include <linux/export.h>
31
32 #include <net/bluetooth/bluetooth.h>
33 #include <net/bluetooth/hci_core.h>
34 #include <net/bluetooth/l2cap.h>
35
36 #include "smp.h"
37
38 static struct bt_sock_list l2cap_sk_list = {
39         .lock = __RW_LOCK_UNLOCKED(l2cap_sk_list.lock)
40 };
41
42 static const struct proto_ops l2cap_sock_ops;
43 static void l2cap_sock_init(struct sock *sk, struct sock *parent);
44 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
45                                      int proto, gfp_t prio);
46
47 bool l2cap_is_socket(struct socket *sock)
48 {
49         return sock && sock->ops == &l2cap_sock_ops;
50 }
51 EXPORT_SYMBOL(l2cap_is_socket);
52
53 static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
54 {
55         struct sock *sk = sock->sk;
56         struct l2cap_chan *chan = l2cap_pi(sk)->chan;
57         struct sockaddr_l2 la;
58         int len, err = 0;
59
60         BT_DBG("sk %p", sk);
61
62         if (!addr || addr->sa_family != AF_BLUETOOTH)
63                 return -EINVAL;
64
65         memset(&la, 0, sizeof(la));
66         len = min_t(unsigned int, sizeof(la), alen);
67         memcpy(&la, addr, len);
68
69         if (la.l2_cid && la.l2_psm)
70                 return -EINVAL;
71
72         if (!bdaddr_type_is_valid(la.l2_bdaddr_type))
73                 return -EINVAL;
74
75         lock_sock(sk);
76
77         if (sk->sk_state != BT_OPEN) {
78                 err = -EBADFD;
79                 goto done;
80         }
81
82         if (la.l2_psm) {
83                 __u16 psm = __le16_to_cpu(la.l2_psm);
84
85                 /* PSM must be odd and lsb of upper byte must be 0 */
86                 if ((psm & 0x0101) != 0x0001) {
87                         err = -EINVAL;
88                         goto done;
89                 }
90
91                 /* Restrict usage of well-known PSMs */
92                 if (psm < 0x1001 && !capable(CAP_NET_BIND_SERVICE)) {
93                         err = -EACCES;
94                         goto done;
95                 }
96         }
97
98         if (la.l2_cid)
99                 err = l2cap_add_scid(chan, __le16_to_cpu(la.l2_cid));
100         else
101                 err = l2cap_add_psm(chan, &la.l2_bdaddr, la.l2_psm);
102
103         if (err < 0)
104                 goto done;
105
106         switch (chan->chan_type) {
107         case L2CAP_CHAN_CONN_LESS:
108                 if (__le16_to_cpu(la.l2_psm) == L2CAP_PSM_3DSP)
109                         chan->sec_level = BT_SECURITY_SDP;
110                 break;
111         case L2CAP_CHAN_CONN_ORIENTED:
112                 if (__le16_to_cpu(la.l2_psm) == L2CAP_PSM_SDP ||
113                     __le16_to_cpu(la.l2_psm) == L2CAP_PSM_RFCOMM)
114                         chan->sec_level = BT_SECURITY_SDP;
115                 break;
116         }
117
118         bacpy(&chan->src, &la.l2_bdaddr);
119         chan->src_type = la.l2_bdaddr_type;
120
121         chan->state = BT_BOUND;
122         sk->sk_state = BT_BOUND;
123
124 done:
125         release_sock(sk);
126         return err;
127 }
128
129 static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr,
130                               int alen, int flags)
131 {
132         struct sock *sk = sock->sk;
133         struct l2cap_chan *chan = l2cap_pi(sk)->chan;
134         struct sockaddr_l2 la;
135         int len, err = 0;
136
137         BT_DBG("sk %p", sk);
138
139         if (!addr || alen < sizeof(addr->sa_family) ||
140             addr->sa_family != AF_BLUETOOTH)
141                 return -EINVAL;
142
143         memset(&la, 0, sizeof(la));
144         len = min_t(unsigned int, sizeof(la), alen);
145         memcpy(&la, addr, len);
146
147         if (la.l2_cid && la.l2_psm)
148                 return -EINVAL;
149
150         if (!bdaddr_type_is_valid(la.l2_bdaddr_type))
151                 return -EINVAL;
152
153         if (chan->src_type == BDADDR_BREDR && la.l2_bdaddr_type != BDADDR_BREDR)
154                 return -EINVAL;
155
156         if (chan->src_type != BDADDR_BREDR && la.l2_bdaddr_type == BDADDR_BREDR)
157                 return -EINVAL;
158
159         err = l2cap_chan_connect(chan, la.l2_psm, __le16_to_cpu(la.l2_cid),
160                                  &la.l2_bdaddr, la.l2_bdaddr_type);
161         if (err)
162                 return err;
163
164         lock_sock(sk);
165
166         err = bt_sock_wait_state(sk, BT_CONNECTED,
167                                  sock_sndtimeo(sk, flags & O_NONBLOCK));
168
169         release_sock(sk);
170
171         return err;
172 }
173
174 static int l2cap_sock_listen(struct socket *sock, int backlog)
175 {
176         struct sock *sk = sock->sk;
177         struct l2cap_chan *chan = l2cap_pi(sk)->chan;
178         int err = 0;
179
180         BT_DBG("sk %p backlog %d", sk, backlog);
181
182         lock_sock(sk);
183
184         if (sk->sk_state != BT_BOUND) {
185                 err = -EBADFD;
186                 goto done;
187         }
188
189         if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM) {
190                 err = -EINVAL;
191                 goto done;
192         }
193
194         switch (chan->mode) {
195         case L2CAP_MODE_BASIC:
196                 break;
197         case L2CAP_MODE_ERTM:
198         case L2CAP_MODE_STREAMING:
199                 if (!disable_ertm)
200                         break;
201                 /* fall through */
202         default:
203                 err = -ENOTSUPP;
204                 goto done;
205         }
206
207         sk->sk_max_ack_backlog = backlog;
208         sk->sk_ack_backlog = 0;
209
210         chan->state = BT_LISTEN;
211         sk->sk_state = BT_LISTEN;
212
213 done:
214         release_sock(sk);
215         return err;
216 }
217
218 static int l2cap_sock_accept(struct socket *sock, struct socket *newsock,
219                              int flags)
220 {
221         DECLARE_WAITQUEUE(wait, current);
222         struct sock *sk = sock->sk, *nsk;
223         long timeo;
224         int err = 0;
225
226         lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
227
228         timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
229
230         BT_DBG("sk %p timeo %ld", sk, timeo);
231
232         /* Wait for an incoming connection. (wake-one). */
233         add_wait_queue_exclusive(sk_sleep(sk), &wait);
234         while (1) {
235                 set_current_state(TASK_INTERRUPTIBLE);
236
237                 if (sk->sk_state != BT_LISTEN) {
238                         err = -EBADFD;
239                         break;
240                 }
241
242                 nsk = bt_accept_dequeue(sk, newsock);
243                 if (nsk)
244                         break;
245
246                 if (!timeo) {
247                         err = -EAGAIN;
248                         break;
249                 }
250
251                 if (signal_pending(current)) {
252                         err = sock_intr_errno(timeo);
253                         break;
254                 }
255
256                 release_sock(sk);
257                 timeo = schedule_timeout(timeo);
258                 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
259         }
260         __set_current_state(TASK_RUNNING);
261         remove_wait_queue(sk_sleep(sk), &wait);
262
263         if (err)
264                 goto done;
265
266         newsock->state = SS_CONNECTED;
267
268         BT_DBG("new socket %p", nsk);
269
270 done:
271         release_sock(sk);
272         return err;
273 }
274
275 static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr,
276                               int *len, int peer)
277 {
278         struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
279         struct sock *sk = sock->sk;
280         struct l2cap_chan *chan = l2cap_pi(sk)->chan;
281
282         BT_DBG("sock %p, sk %p", sock, sk);
283
284         memset(la, 0, sizeof(struct sockaddr_l2));
285         addr->sa_family = AF_BLUETOOTH;
286         *len = sizeof(struct sockaddr_l2);
287
288         if (peer) {
289                 la->l2_psm = chan->psm;
290                 bacpy(&la->l2_bdaddr, &chan->dst);
291                 la->l2_cid = cpu_to_le16(chan->dcid);
292                 la->l2_bdaddr_type = chan->dst_type;
293         } else {
294                 la->l2_psm = chan->sport;
295                 bacpy(&la->l2_bdaddr, &chan->src);
296                 la->l2_cid = cpu_to_le16(chan->scid);
297                 la->l2_bdaddr_type = chan->src_type;
298         }
299
300         return 0;
301 }
302
303 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname,
304                                      char __user *optval, int __user *optlen)
305 {
306         struct sock *sk = sock->sk;
307         struct l2cap_chan *chan = l2cap_pi(sk)->chan;
308         struct l2cap_options opts;
309         struct l2cap_conninfo cinfo;
310         int len, err = 0;
311         u32 opt;
312
313         BT_DBG("sk %p", sk);
314
315         if (get_user(len, optlen))
316                 return -EFAULT;
317
318         lock_sock(sk);
319
320         switch (optname) {
321         case L2CAP_OPTIONS:
322                 memset(&opts, 0, sizeof(opts));
323                 opts.imtu     = chan->imtu;
324                 opts.omtu     = chan->omtu;
325                 opts.flush_to = chan->flush_to;
326                 opts.mode     = chan->mode;
327                 opts.fcs      = chan->fcs;
328                 opts.max_tx   = chan->max_tx;
329                 opts.txwin_size = chan->tx_win;
330
331                 len = min_t(unsigned int, len, sizeof(opts));
332                 if (copy_to_user(optval, (char *) &opts, len))
333                         err = -EFAULT;
334
335                 break;
336
337         case L2CAP_LM:
338                 switch (chan->sec_level) {
339                 case BT_SECURITY_LOW:
340                         opt = L2CAP_LM_AUTH;
341                         break;
342                 case BT_SECURITY_MEDIUM:
343                         opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
344                         break;
345                 case BT_SECURITY_HIGH:
346                         opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
347                               L2CAP_LM_SECURE;
348                         break;
349                 default:
350                         opt = 0;
351                         break;
352                 }
353
354                 if (test_bit(FLAG_ROLE_SWITCH, &chan->flags))
355                         opt |= L2CAP_LM_MASTER;
356
357                 if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags))
358                         opt |= L2CAP_LM_RELIABLE;
359
360                 if (put_user(opt, (u32 __user *) optval))
361                         err = -EFAULT;
362                 break;
363
364         case L2CAP_CONNINFO:
365                 if (sk->sk_state != BT_CONNECTED &&
366                     !(sk->sk_state == BT_CONNECT2 &&
367                       test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))) {
368                         err = -ENOTCONN;
369                         break;
370                 }
371
372                 memset(&cinfo, 0, sizeof(cinfo));
373                 cinfo.hci_handle = chan->conn->hcon->handle;
374                 memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3);
375
376                 len = min_t(unsigned int, len, sizeof(cinfo));
377                 if (copy_to_user(optval, (char *) &cinfo, len))
378                         err = -EFAULT;
379
380                 break;
381
382         default:
383                 err = -ENOPROTOOPT;
384                 break;
385         }
386
387         release_sock(sk);
388         return err;
389 }
390
391 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname,
392                                  char __user *optval, int __user *optlen)
393 {
394         struct sock *sk = sock->sk;
395         struct l2cap_chan *chan = l2cap_pi(sk)->chan;
396         struct bt_security sec;
397         struct bt_power pwr;
398         int len, err = 0;
399
400         BT_DBG("sk %p", sk);
401
402         if (level == SOL_L2CAP)
403                 return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
404
405         if (level != SOL_BLUETOOTH)
406                 return -ENOPROTOOPT;
407
408         if (get_user(len, optlen))
409                 return -EFAULT;
410
411         lock_sock(sk);
412
413         switch (optname) {
414         case BT_SECURITY:
415                 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
416                     chan->chan_type != L2CAP_CHAN_RAW) {
417                         err = -EINVAL;
418                         break;
419                 }
420
421                 memset(&sec, 0, sizeof(sec));
422                 if (chan->conn) {
423                         sec.level = chan->conn->hcon->sec_level;
424
425                         if (sk->sk_state == BT_CONNECTED)
426                                 sec.key_size = chan->conn->hcon->enc_key_size;
427                 } else {
428                         sec.level = chan->sec_level;
429                 }
430
431                 len = min_t(unsigned int, len, sizeof(sec));
432                 if (copy_to_user(optval, (char *) &sec, len))
433                         err = -EFAULT;
434
435                 break;
436
437         case BT_DEFER_SETUP:
438                 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
439                         err = -EINVAL;
440                         break;
441                 }
442
443                 if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags),
444                              (u32 __user *) optval))
445                         err = -EFAULT;
446
447                 break;
448
449         case BT_FLUSHABLE:
450                 if (put_user(test_bit(FLAG_FLUSHABLE, &chan->flags),
451                              (u32 __user *) optval))
452                         err = -EFAULT;
453
454                 break;
455
456         case BT_POWER:
457                 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM
458                     && sk->sk_type != SOCK_RAW) {
459                         err = -EINVAL;
460                         break;
461                 }
462
463                 pwr.force_active = test_bit(FLAG_FORCE_ACTIVE, &chan->flags);
464
465                 len = min_t(unsigned int, len, sizeof(pwr));
466                 if (copy_to_user(optval, (char *) &pwr, len))
467                         err = -EFAULT;
468
469                 break;
470
471         case BT_CHANNEL_POLICY:
472                 if (put_user(chan->chan_policy, (u32 __user *) optval))
473                         err = -EFAULT;
474                 break;
475
476         default:
477                 err = -ENOPROTOOPT;
478                 break;
479         }
480
481         release_sock(sk);
482         return err;
483 }
484
485 static bool l2cap_valid_mtu(struct l2cap_chan *chan, u16 mtu)
486 {
487         switch (chan->scid) {
488         case L2CAP_CID_ATT:
489                 if (mtu < L2CAP_LE_MIN_MTU)
490                         return false;
491                 break;
492
493         default:
494                 if (mtu < L2CAP_DEFAULT_MIN_MTU)
495                         return false;
496         }
497
498         return true;
499 }
500
501 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
502                                      char __user *optval, unsigned int optlen)
503 {
504         struct sock *sk = sock->sk;
505         struct l2cap_chan *chan = l2cap_pi(sk)->chan;
506         struct l2cap_options opts;
507         int len, err = 0;
508         u32 opt;
509
510         BT_DBG("sk %p", sk);
511
512         lock_sock(sk);
513
514         switch (optname) {
515         case L2CAP_OPTIONS:
516                 if (sk->sk_state == BT_CONNECTED) {
517                         err = -EINVAL;
518                         break;
519                 }
520
521                 opts.imtu     = chan->imtu;
522                 opts.omtu     = chan->omtu;
523                 opts.flush_to = chan->flush_to;
524                 opts.mode     = chan->mode;
525                 opts.fcs      = chan->fcs;
526                 opts.max_tx   = chan->max_tx;
527                 opts.txwin_size = chan->tx_win;
528
529                 len = min_t(unsigned int, sizeof(opts), optlen);
530                 if (copy_from_user((char *) &opts, optval, len)) {
531                         err = -EFAULT;
532                         break;
533                 }
534
535                 if (opts.txwin_size > L2CAP_DEFAULT_EXT_WINDOW) {
536                         err = -EINVAL;
537                         break;
538                 }
539
540                 if (!l2cap_valid_mtu(chan, opts.imtu)) {
541                         err = -EINVAL;
542                         break;
543                 }
544
545                 chan->mode = opts.mode;
546                 switch (chan->mode) {
547                 case L2CAP_MODE_BASIC:
548                         clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
549                         break;
550                 case L2CAP_MODE_ERTM:
551                 case L2CAP_MODE_STREAMING:
552                         if (!disable_ertm)
553                                 break;
554                         /* fall through */
555                 default:
556                         err = -EINVAL;
557                         break;
558                 }
559
560                 chan->imtu = opts.imtu;
561                 chan->omtu = opts.omtu;
562                 chan->fcs  = opts.fcs;
563                 chan->max_tx = opts.max_tx;
564                 chan->tx_win = opts.txwin_size;
565                 chan->flush_to = opts.flush_to;
566                 break;
567
568         case L2CAP_LM:
569                 if (get_user(opt, (u32 __user *) optval)) {
570                         err = -EFAULT;
571                         break;
572                 }
573
574                 if (opt & L2CAP_LM_AUTH)
575                         chan->sec_level = BT_SECURITY_LOW;
576                 if (opt & L2CAP_LM_ENCRYPT)
577                         chan->sec_level = BT_SECURITY_MEDIUM;
578                 if (opt & L2CAP_LM_SECURE)
579                         chan->sec_level = BT_SECURITY_HIGH;
580
581                 if (opt & L2CAP_LM_MASTER)
582                         set_bit(FLAG_ROLE_SWITCH, &chan->flags);
583                 else
584                         clear_bit(FLAG_ROLE_SWITCH, &chan->flags);
585
586                 if (opt & L2CAP_LM_RELIABLE)
587                         set_bit(FLAG_FORCE_RELIABLE, &chan->flags);
588                 else
589                         clear_bit(FLAG_FORCE_RELIABLE, &chan->flags);
590                 break;
591
592         default:
593                 err = -ENOPROTOOPT;
594                 break;
595         }
596
597         release_sock(sk);
598         return err;
599 }
600
601 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
602                                  char __user *optval, unsigned int optlen)
603 {
604         struct sock *sk = sock->sk;
605         struct l2cap_chan *chan = l2cap_pi(sk)->chan;
606         struct bt_security sec;
607         struct bt_power pwr;
608         struct l2cap_conn *conn;
609         int len, err = 0;
610         u32 opt;
611
612         BT_DBG("sk %p", sk);
613
614         if (level == SOL_L2CAP)
615                 return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
616
617         if (level != SOL_BLUETOOTH)
618                 return -ENOPROTOOPT;
619
620         lock_sock(sk);
621
622         switch (optname) {
623         case BT_SECURITY:
624                 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
625                     chan->chan_type != L2CAP_CHAN_RAW) {
626                         err = -EINVAL;
627                         break;
628                 }
629
630                 sec.level = BT_SECURITY_LOW;
631
632                 len = min_t(unsigned int, sizeof(sec), optlen);
633                 if (copy_from_user((char *) &sec, optval, len)) {
634                         err = -EFAULT;
635                         break;
636                 }
637
638                 if (sec.level < BT_SECURITY_LOW ||
639                     sec.level > BT_SECURITY_HIGH) {
640                         err = -EINVAL;
641                         break;
642                 }
643
644                 chan->sec_level = sec.level;
645
646                 if (!chan->conn)
647                         break;
648
649                 conn = chan->conn;
650
651                 /*change security for LE channels */
652                 if (chan->scid == L2CAP_CID_ATT) {
653                         if (!conn->hcon->out) {
654                                 err = -EINVAL;
655                                 break;
656                         }
657
658                         if (smp_conn_security(conn->hcon, sec.level))
659                                 break;
660                         sk->sk_state = BT_CONFIG;
661                         chan->state = BT_CONFIG;
662
663                 /* or for ACL link */
664                 } else if ((sk->sk_state == BT_CONNECT2 &&
665                             test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) ||
666                            sk->sk_state == BT_CONNECTED) {
667                         if (!l2cap_chan_check_security(chan))
668                                 set_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
669                         else
670                                 sk->sk_state_change(sk);
671                 } else {
672                         err = -EINVAL;
673                 }
674                 break;
675
676         case BT_DEFER_SETUP:
677                 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
678                         err = -EINVAL;
679                         break;
680                 }
681
682                 if (get_user(opt, (u32 __user *) optval)) {
683                         err = -EFAULT;
684                         break;
685                 }
686
687                 if (opt) {
688                         set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
689                         set_bit(FLAG_DEFER_SETUP, &chan->flags);
690                 } else {
691                         clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
692                         clear_bit(FLAG_DEFER_SETUP, &chan->flags);
693                 }
694                 break;
695
696         case BT_FLUSHABLE:
697                 if (get_user(opt, (u32 __user *) optval)) {
698                         err = -EFAULT;
699                         break;
700                 }
701
702                 if (opt > BT_FLUSHABLE_ON) {
703                         err = -EINVAL;
704                         break;
705                 }
706
707                 if (opt == BT_FLUSHABLE_OFF) {
708                         conn = chan->conn;
709                         /* proceed further only when we have l2cap_conn and
710                            No Flush support in the LM */
711                         if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
712                                 err = -EINVAL;
713                                 break;
714                         }
715                 }
716
717                 if (opt)
718                         set_bit(FLAG_FLUSHABLE, &chan->flags);
719                 else
720                         clear_bit(FLAG_FLUSHABLE, &chan->flags);
721                 break;
722
723         case BT_POWER:
724                 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
725                     chan->chan_type != L2CAP_CHAN_RAW) {
726                         err = -EINVAL;
727                         break;
728                 }
729
730                 pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
731
732                 len = min_t(unsigned int, sizeof(pwr), optlen);
733                 if (copy_from_user((char *) &pwr, optval, len)) {
734                         err = -EFAULT;
735                         break;
736                 }
737
738                 if (pwr.force_active)
739                         set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
740                 else
741                         clear_bit(FLAG_FORCE_ACTIVE, &chan->flags);
742                 break;
743
744         case BT_CHANNEL_POLICY:
745                 if (get_user(opt, (u32 __user *) optval)) {
746                         err = -EFAULT;
747                         break;
748                 }
749
750                 if (opt > BT_CHANNEL_POLICY_AMP_PREFERRED) {
751                         err = -EINVAL;
752                         break;
753                 }
754
755                 if (chan->mode != L2CAP_MODE_ERTM &&
756                     chan->mode != L2CAP_MODE_STREAMING) {
757                         err = -EOPNOTSUPP;
758                         break;
759                 }
760
761                 chan->chan_policy = (u8) opt;
762
763                 if (sk->sk_state == BT_CONNECTED &&
764                     chan->move_role == L2CAP_MOVE_ROLE_NONE)
765                         l2cap_move_start(chan);
766
767                 break;
768
769         default:
770                 err = -ENOPROTOOPT;
771                 break;
772         }
773
774         release_sock(sk);
775         return err;
776 }
777
778 static int l2cap_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
779                               struct msghdr *msg, size_t len)
780 {
781         struct sock *sk = sock->sk;
782         struct l2cap_chan *chan = l2cap_pi(sk)->chan;
783         int err;
784
785         BT_DBG("sock %p, sk %p", sock, sk);
786
787         err = sock_error(sk);
788         if (err)
789                 return err;
790
791         if (msg->msg_flags & MSG_OOB)
792                 return -EOPNOTSUPP;
793
794         if (sk->sk_state != BT_CONNECTED)
795                 return -ENOTCONN;
796
797         lock_sock(sk);
798         err = bt_sock_wait_ready(sk, msg->msg_flags);
799         release_sock(sk);
800         if (err)
801                 return err;
802
803         l2cap_chan_lock(chan);
804         err = l2cap_chan_send(chan, msg, len, sk->sk_priority);
805         l2cap_chan_unlock(chan);
806
807         return err;
808 }
809
810 static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
811                               struct msghdr *msg, size_t len, int flags)
812 {
813         struct sock *sk = sock->sk;
814         struct l2cap_pinfo *pi = l2cap_pi(sk);
815         int err;
816
817         lock_sock(sk);
818
819         if (sk->sk_state == BT_CONNECT2 && test_bit(BT_SK_DEFER_SETUP,
820                                                     &bt_sk(sk)->flags)) {
821                 sk->sk_state = BT_CONFIG;
822                 pi->chan->state = BT_CONFIG;
823
824                 __l2cap_connect_rsp_defer(pi->chan);
825                 err = 0;
826                 goto done;
827         }
828
829         release_sock(sk);
830
831         if (sock->type == SOCK_STREAM)
832                 err = bt_sock_stream_recvmsg(iocb, sock, msg, len, flags);
833         else
834                 err = bt_sock_recvmsg(iocb, sock, msg, len, flags);
835
836         if (pi->chan->mode != L2CAP_MODE_ERTM)
837                 return err;
838
839         /* Attempt to put pending rx data in the socket buffer */
840
841         lock_sock(sk);
842
843         if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state))
844                 goto done;
845
846         if (pi->rx_busy_skb) {
847                 if (!sock_queue_rcv_skb(sk, pi->rx_busy_skb))
848                         pi->rx_busy_skb = NULL;
849                 else
850                         goto done;
851         }
852
853         /* Restore data flow when half of the receive buffer is
854          * available.  This avoids resending large numbers of
855          * frames.
856          */
857         if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf >> 1)
858                 l2cap_chan_busy(pi->chan, 0);
859
860 done:
861         release_sock(sk);
862         return err;
863 }
864
865 /* Kill socket (only if zapped and orphan)
866  * Must be called on unlocked socket.
867  */
868 static void l2cap_sock_kill(struct sock *sk)
869 {
870         if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
871                 return;
872
873         BT_DBG("sk %p state %s", sk, state_to_string(sk->sk_state));
874
875         /* Kill poor orphan */
876
877         l2cap_chan_put(l2cap_pi(sk)->chan);
878         sock_set_flag(sk, SOCK_DEAD);
879         sock_put(sk);
880 }
881
882 static int l2cap_sock_shutdown(struct socket *sock, int how)
883 {
884         struct sock *sk = sock->sk;
885         struct l2cap_chan *chan;
886         struct l2cap_conn *conn;
887         int err = 0;
888
889         BT_DBG("sock %p, sk %p", sock, sk);
890
891         if (!sk)
892                 return 0;
893
894         chan = l2cap_pi(sk)->chan;
895         conn = chan->conn;
896
897         if (conn)
898                 mutex_lock(&conn->chan_lock);
899
900         l2cap_chan_lock(chan);
901         lock_sock(sk);
902
903         if (!sk->sk_shutdown) {
904                 if (chan->mode == L2CAP_MODE_ERTM)
905                         err = __l2cap_wait_ack(sk);
906
907                 sk->sk_shutdown = SHUTDOWN_MASK;
908
909                 release_sock(sk);
910                 l2cap_chan_close(chan, 0);
911                 lock_sock(sk);
912
913                 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime)
914                         err = bt_sock_wait_state(sk, BT_CLOSED,
915                                                  sk->sk_lingertime);
916         }
917
918         if (!err && sk->sk_err)
919                 err = -sk->sk_err;
920
921         release_sock(sk);
922         l2cap_chan_unlock(chan);
923
924         if (conn)
925                 mutex_unlock(&conn->chan_lock);
926
927         return err;
928 }
929
930 static int l2cap_sock_release(struct socket *sock)
931 {
932         struct sock *sk = sock->sk;
933         int err;
934
935         BT_DBG("sock %p, sk %p", sock, sk);
936
937         if (!sk)
938                 return 0;
939
940         bt_sock_unlink(&l2cap_sk_list, sk);
941
942         err = l2cap_sock_shutdown(sock, 2);
943
944         sock_orphan(sk);
945         l2cap_sock_kill(sk);
946         return err;
947 }
948
949 static void l2cap_sock_cleanup_listen(struct sock *parent)
950 {
951         struct sock *sk;
952
953         BT_DBG("parent %p", parent);
954
955         /* Close not yet accepted channels */
956         while ((sk = bt_accept_dequeue(parent, NULL))) {
957                 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
958
959                 l2cap_chan_lock(chan);
960                 __clear_chan_timer(chan);
961                 l2cap_chan_close(chan, ECONNRESET);
962                 l2cap_chan_unlock(chan);
963
964                 l2cap_sock_kill(sk);
965         }
966 }
967
968 static struct l2cap_chan *l2cap_sock_new_connection_cb(struct l2cap_chan *chan)
969 {
970         struct sock *sk, *parent = chan->data;
971
972         /* Check for backlog size */
973         if (sk_acceptq_is_full(parent)) {
974                 BT_DBG("backlog full %d", parent->sk_ack_backlog);
975                 return NULL;
976         }
977
978         sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
979                               GFP_ATOMIC);
980         if (!sk)
981                 return NULL;
982
983         bt_sock_reclassify_lock(sk, BTPROTO_L2CAP);
984
985         l2cap_sock_init(sk, parent);
986
987         bt_accept_enqueue(parent, sk);
988
989         return l2cap_pi(sk)->chan;
990 }
991
992 static int l2cap_sock_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb)
993 {
994         struct sock *sk = chan->data;
995         int err;
996
997         lock_sock(sk);
998
999         if (l2cap_pi(sk)->rx_busy_skb) {
1000                 err = -ENOMEM;
1001                 goto done;
1002         }
1003
1004         err = sock_queue_rcv_skb(sk, skb);
1005
1006         /* For ERTM, handle one skb that doesn't fit into the recv
1007          * buffer.  This is important to do because the data frames
1008          * have already been acked, so the skb cannot be discarded.
1009          *
1010          * Notify the l2cap core that the buffer is full, so the
1011          * LOCAL_BUSY state is entered and no more frames are
1012          * acked and reassembled until there is buffer space
1013          * available.
1014          */
1015         if (err < 0 && chan->mode == L2CAP_MODE_ERTM) {
1016                 l2cap_pi(sk)->rx_busy_skb = skb;
1017                 l2cap_chan_busy(chan, 1);
1018                 err = 0;
1019         }
1020
1021 done:
1022         release_sock(sk);
1023
1024         return err;
1025 }
1026
1027 static void l2cap_sock_close_cb(struct l2cap_chan *chan)
1028 {
1029         struct sock *sk = chan->data;
1030
1031         l2cap_sock_kill(sk);
1032 }
1033
1034 static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
1035 {
1036         struct sock *sk = chan->data;
1037         struct sock *parent;
1038
1039         lock_sock(sk);
1040
1041         parent = bt_sk(sk)->parent;
1042
1043         sock_set_flag(sk, SOCK_ZAPPED);
1044
1045         switch (chan->state) {
1046         case BT_OPEN:
1047         case BT_BOUND:
1048         case BT_CLOSED:
1049                 break;
1050         case BT_LISTEN:
1051                 l2cap_sock_cleanup_listen(sk);
1052                 sk->sk_state = BT_CLOSED;
1053                 chan->state = BT_CLOSED;
1054
1055                 break;
1056         default:
1057                 sk->sk_state = BT_CLOSED;
1058                 chan->state = BT_CLOSED;
1059
1060                 sk->sk_err = err;
1061
1062                 if (parent) {
1063                         bt_accept_unlink(sk);
1064                         parent->sk_data_ready(parent, 0);
1065                 } else {
1066                         sk->sk_state_change(sk);
1067                 }
1068
1069                 break;
1070         }
1071
1072         release_sock(sk);
1073 }
1074
1075 static void l2cap_sock_state_change_cb(struct l2cap_chan *chan, int state,
1076                                        int err)
1077 {
1078         struct sock *sk = chan->data;
1079
1080         sk->sk_state = state;
1081
1082         if (err)
1083                 sk->sk_err = err;
1084 }
1085
1086 static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan,
1087                                                unsigned long len, int nb)
1088 {
1089         struct sk_buff *skb;
1090         int err;
1091
1092         l2cap_chan_unlock(chan);
1093         skb = bt_skb_send_alloc(chan->sk, len, nb, &err);
1094         l2cap_chan_lock(chan);
1095
1096         if (!skb)
1097                 return ERR_PTR(err);
1098
1099         return skb;
1100 }
1101
1102 static void l2cap_sock_ready_cb(struct l2cap_chan *chan)
1103 {
1104         struct sock *sk = chan->data;
1105         struct sock *parent;
1106
1107         lock_sock(sk);
1108
1109         parent = bt_sk(sk)->parent;
1110
1111         BT_DBG("sk %p, parent %p", sk, parent);
1112
1113         sk->sk_state = BT_CONNECTED;
1114         sk->sk_state_change(sk);
1115
1116         if (parent)
1117                 parent->sk_data_ready(parent, 0);
1118
1119         release_sock(sk);
1120 }
1121
1122 static void l2cap_sock_defer_cb(struct l2cap_chan *chan)
1123 {
1124         struct sock *sk = chan->data;
1125         struct sock *parent = bt_sk(sk)->parent;
1126
1127         if (parent)
1128                 parent->sk_data_ready(parent, 0);
1129 }
1130
1131 static void l2cap_sock_resume_cb(struct l2cap_chan *chan)
1132 {
1133         struct sock *sk = chan->data;
1134
1135         clear_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
1136         sk->sk_state_change(sk);
1137 }
1138
1139 static struct l2cap_ops l2cap_chan_ops = {
1140         .name           = "L2CAP Socket Interface",
1141         .new_connection = l2cap_sock_new_connection_cb,
1142         .recv           = l2cap_sock_recv_cb,
1143         .close          = l2cap_sock_close_cb,
1144         .teardown       = l2cap_sock_teardown_cb,
1145         .state_change   = l2cap_sock_state_change_cb,
1146         .ready          = l2cap_sock_ready_cb,
1147         .defer          = l2cap_sock_defer_cb,
1148         .resume         = l2cap_sock_resume_cb,
1149         .alloc_skb      = l2cap_sock_alloc_skb_cb,
1150 };
1151
1152 static void l2cap_sock_destruct(struct sock *sk)
1153 {
1154         BT_DBG("sk %p", sk);
1155
1156         if (l2cap_pi(sk)->chan)
1157                 l2cap_chan_put(l2cap_pi(sk)->chan);
1158
1159         if (l2cap_pi(sk)->rx_busy_skb) {
1160                 kfree_skb(l2cap_pi(sk)->rx_busy_skb);
1161                 l2cap_pi(sk)->rx_busy_skb = NULL;
1162         }
1163
1164         skb_queue_purge(&sk->sk_receive_queue);
1165         skb_queue_purge(&sk->sk_write_queue);
1166 }
1167
1168 static void l2cap_skb_msg_name(struct sk_buff *skb, void *msg_name,
1169                                int *msg_namelen)
1170 {
1171         struct sockaddr_l2 *la = (struct sockaddr_l2 *) msg_name;
1172
1173         memset(la, 0, sizeof(struct sockaddr_l2));
1174         la->l2_family = AF_BLUETOOTH;
1175         la->l2_psm = bt_cb(skb)->psm;
1176         bacpy(&la->l2_bdaddr, &bt_cb(skb)->bdaddr);
1177
1178         *msg_namelen = sizeof(struct sockaddr_l2);
1179 }
1180
1181 static void l2cap_sock_init(struct sock *sk, struct sock *parent)
1182 {
1183         struct l2cap_chan *chan = l2cap_pi(sk)->chan;
1184
1185         BT_DBG("sk %p", sk);
1186
1187         if (parent) {
1188                 struct l2cap_chan *pchan = l2cap_pi(parent)->chan;
1189
1190                 sk->sk_type = parent->sk_type;
1191                 bt_sk(sk)->flags = bt_sk(parent)->flags;
1192
1193                 chan->chan_type = pchan->chan_type;
1194                 chan->imtu = pchan->imtu;
1195                 chan->omtu = pchan->omtu;
1196                 chan->conf_state = pchan->conf_state;
1197                 chan->mode = pchan->mode;
1198                 chan->fcs  = pchan->fcs;
1199                 chan->max_tx = pchan->max_tx;
1200                 chan->tx_win = pchan->tx_win;
1201                 chan->tx_win_max = pchan->tx_win_max;
1202                 chan->sec_level = pchan->sec_level;
1203                 chan->flags = pchan->flags;
1204
1205                 security_sk_clone(parent, sk);
1206         } else {
1207                 switch (sk->sk_type) {
1208                 case SOCK_RAW:
1209                         chan->chan_type = L2CAP_CHAN_RAW;
1210                         break;
1211                 case SOCK_DGRAM:
1212                         chan->chan_type = L2CAP_CHAN_CONN_LESS;
1213                         bt_sk(sk)->skb_msg_name = l2cap_skb_msg_name;
1214                         break;
1215                 case SOCK_SEQPACKET:
1216                 case SOCK_STREAM:
1217                         chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
1218                         break;
1219                 }
1220
1221                 chan->imtu = L2CAP_DEFAULT_MTU;
1222                 chan->omtu = 0;
1223                 if (!disable_ertm && sk->sk_type == SOCK_STREAM) {
1224                         chan->mode = L2CAP_MODE_ERTM;
1225                         set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
1226                 } else {
1227                         chan->mode = L2CAP_MODE_BASIC;
1228                 }
1229
1230                 l2cap_chan_set_defaults(chan);
1231         }
1232
1233         /* Default config options */
1234         chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
1235
1236         chan->data = sk;
1237         chan->ops = &l2cap_chan_ops;
1238 }
1239
1240 static struct proto l2cap_proto = {
1241         .name           = "L2CAP",
1242         .owner          = THIS_MODULE,
1243         .obj_size       = sizeof(struct l2cap_pinfo)
1244 };
1245
1246 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
1247                                      int proto, gfp_t prio)
1248 {
1249         struct sock *sk;
1250         struct l2cap_chan *chan;
1251
1252         sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto);
1253         if (!sk)
1254                 return NULL;
1255
1256         sock_init_data(sock, sk);
1257         INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1258
1259         sk->sk_destruct = l2cap_sock_destruct;
1260         sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
1261
1262         sock_reset_flag(sk, SOCK_ZAPPED);
1263
1264         sk->sk_protocol = proto;
1265         sk->sk_state = BT_OPEN;
1266
1267         chan = l2cap_chan_create();
1268         if (!chan) {
1269                 sk_free(sk);
1270                 return NULL;
1271         }
1272
1273         l2cap_chan_hold(chan);
1274
1275         chan->sk = sk;
1276
1277         l2cap_pi(sk)->chan = chan;
1278
1279         return sk;
1280 }
1281
1282 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1283                              int kern)
1284 {
1285         struct sock *sk;
1286
1287         BT_DBG("sock %p", sock);
1288
1289         sock->state = SS_UNCONNECTED;
1290
1291         if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1292             sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1293                 return -ESOCKTNOSUPPORT;
1294
1295         if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1296                 return -EPERM;
1297
1298         sock->ops = &l2cap_sock_ops;
1299
1300         sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC);
1301         if (!sk)
1302                 return -ENOMEM;
1303
1304         l2cap_sock_init(sk, NULL);
1305         bt_sock_link(&l2cap_sk_list, sk);
1306         return 0;
1307 }
1308
1309 static const struct proto_ops l2cap_sock_ops = {
1310         .family         = PF_BLUETOOTH,
1311         .owner          = THIS_MODULE,
1312         .release        = l2cap_sock_release,
1313         .bind           = l2cap_sock_bind,
1314         .connect        = l2cap_sock_connect,
1315         .listen         = l2cap_sock_listen,
1316         .accept         = l2cap_sock_accept,
1317         .getname        = l2cap_sock_getname,
1318         .sendmsg        = l2cap_sock_sendmsg,
1319         .recvmsg        = l2cap_sock_recvmsg,
1320         .poll           = bt_sock_poll,
1321         .ioctl          = bt_sock_ioctl,
1322         .mmap           = sock_no_mmap,
1323         .socketpair     = sock_no_socketpair,
1324         .shutdown       = l2cap_sock_shutdown,
1325         .setsockopt     = l2cap_sock_setsockopt,
1326         .getsockopt     = l2cap_sock_getsockopt
1327 };
1328
1329 static const struct net_proto_family l2cap_sock_family_ops = {
1330         .family = PF_BLUETOOTH,
1331         .owner  = THIS_MODULE,
1332         .create = l2cap_sock_create,
1333 };
1334
1335 int __init l2cap_init_sockets(void)
1336 {
1337         int err;
1338
1339         err = proto_register(&l2cap_proto, 0);
1340         if (err < 0)
1341                 return err;
1342
1343         err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1344         if (err < 0) {
1345                 BT_ERR("L2CAP socket registration failed");
1346                 goto error;
1347         }
1348
1349         err = bt_procfs_init(&init_net, "l2cap", &l2cap_sk_list,
1350                              NULL);
1351         if (err < 0) {
1352                 BT_ERR("Failed to create L2CAP proc file");
1353                 bt_sock_unregister(BTPROTO_L2CAP);
1354                 goto error;
1355         }
1356
1357         BT_INFO("L2CAP socket layer initialized");
1358
1359         return 0;
1360
1361 error:
1362         proto_unregister(&l2cap_proto);
1363         return err;
1364 }
1365
1366 void l2cap_cleanup_sockets(void)
1367 {
1368         bt_procfs_cleanup(&init_net, "l2cap");
1369         bt_sock_unregister(BTPROTO_L2CAP);
1370         proto_unregister(&l2cap_proto);
1371 }