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