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/security.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 #include <net/bluetooth/smp.h> 37 38 static const struct proto_ops l2cap_sock_ops; 39 static void l2cap_sock_init(struct sock *sk, struct sock *parent); 40 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio); 41 42 static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen) 43 { 44 struct sock *sk = sock->sk; 45 struct l2cap_chan *chan = l2cap_pi(sk)->chan; 46 struct sockaddr_l2 la; 47 int len, err = 0; 48 49 BT_DBG("sk %p", sk); 50 51 if (!addr || addr->sa_family != AF_BLUETOOTH) 52 return -EINVAL; 53 54 memset(&la, 0, sizeof(la)); 55 len = min_t(unsigned int, sizeof(la), alen); 56 memcpy(&la, addr, len); 57 58 if (la.l2_cid && la.l2_psm) 59 return -EINVAL; 60 61 lock_sock(sk); 62 63 if (sk->sk_state != BT_OPEN) { 64 err = -EBADFD; 65 goto done; 66 } 67 68 if (la.l2_psm) { 69 __u16 psm = __le16_to_cpu(la.l2_psm); 70 71 /* PSM must be odd and lsb of upper byte must be 0 */ 72 if ((psm & 0x0101) != 0x0001) { 73 err = -EINVAL; 74 goto done; 75 } 76 77 /* Restrict usage of well-known PSMs */ 78 if (psm < 0x1001 && !capable(CAP_NET_BIND_SERVICE)) { 79 err = -EACCES; 80 goto done; 81 } 82 } 83 84 if (la.l2_cid) 85 err = l2cap_add_scid(chan, __le16_to_cpu(la.l2_cid)); 86 else 87 err = l2cap_add_psm(chan, &la.l2_bdaddr, la.l2_psm); 88 89 if (err < 0) 90 goto done; 91 92 if (__le16_to_cpu(la.l2_psm) == 0x0001 || 93 __le16_to_cpu(la.l2_psm) == 0x0003) 94 chan->sec_level = BT_SECURITY_SDP; 95 96 bacpy(&bt_sk(sk)->src, &la.l2_bdaddr); 97 98 chan->state = BT_BOUND; 99 sk->sk_state = BT_BOUND; 100 101 done: 102 release_sock(sk); 103 return err; 104 } 105 106 static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags) 107 { 108 struct sock *sk = sock->sk; 109 struct l2cap_chan *chan = l2cap_pi(sk)->chan; 110 struct sockaddr_l2 la; 111 int len, err = 0; 112 113 BT_DBG("sk %p", sk); 114 115 if (!addr || alen < sizeof(addr->sa_family) || 116 addr->sa_family != AF_BLUETOOTH) 117 return -EINVAL; 118 119 memset(&la, 0, sizeof(la)); 120 len = min_t(unsigned int, sizeof(la), alen); 121 memcpy(&la, addr, len); 122 123 if (la.l2_cid && la.l2_psm) 124 return -EINVAL; 125 126 err = l2cap_chan_connect(chan, la.l2_psm, __le16_to_cpu(la.l2_cid), 127 &la.l2_bdaddr); 128 if (err) 129 return err; 130 131 lock_sock(sk); 132 133 err = bt_sock_wait_state(sk, BT_CONNECTED, 134 sock_sndtimeo(sk, flags & O_NONBLOCK)); 135 136 release_sock(sk); 137 138 return err; 139 } 140 141 static int l2cap_sock_listen(struct socket *sock, int backlog) 142 { 143 struct sock *sk = sock->sk; 144 struct l2cap_chan *chan = l2cap_pi(sk)->chan; 145 int err = 0; 146 147 BT_DBG("sk %p backlog %d", sk, backlog); 148 149 lock_sock(sk); 150 151 if ((sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM) 152 || sk->sk_state != BT_BOUND) { 153 err = -EBADFD; 154 goto done; 155 } 156 157 switch (chan->mode) { 158 case L2CAP_MODE_BASIC: 159 break; 160 case L2CAP_MODE_ERTM: 161 case L2CAP_MODE_STREAMING: 162 if (!disable_ertm) 163 break; 164 /* fall through */ 165 default: 166 err = -ENOTSUPP; 167 goto done; 168 } 169 170 sk->sk_max_ack_backlog = backlog; 171 sk->sk_ack_backlog = 0; 172 173 chan->state = BT_LISTEN; 174 sk->sk_state = BT_LISTEN; 175 176 done: 177 release_sock(sk); 178 return err; 179 } 180 181 static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags) 182 { 183 DECLARE_WAITQUEUE(wait, current); 184 struct sock *sk = sock->sk, *nsk; 185 long timeo; 186 int err = 0; 187 188 lock_sock_nested(sk, SINGLE_DEPTH_NESTING); 189 190 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK); 191 192 BT_DBG("sk %p timeo %ld", sk, timeo); 193 194 /* Wait for an incoming connection. (wake-one). */ 195 add_wait_queue_exclusive(sk_sleep(sk), &wait); 196 while (1) { 197 set_current_state(TASK_INTERRUPTIBLE); 198 199 if (sk->sk_state != BT_LISTEN) { 200 err = -EBADFD; 201 break; 202 } 203 204 nsk = bt_accept_dequeue(sk, newsock); 205 if (nsk) 206 break; 207 208 if (!timeo) { 209 err = -EAGAIN; 210 break; 211 } 212 213 if (signal_pending(current)) { 214 err = sock_intr_errno(timeo); 215 break; 216 } 217 218 release_sock(sk); 219 timeo = schedule_timeout(timeo); 220 lock_sock_nested(sk, SINGLE_DEPTH_NESTING); 221 } 222 __set_current_state(TASK_RUNNING); 223 remove_wait_queue(sk_sleep(sk), &wait); 224 225 if (err) 226 goto done; 227 228 newsock->state = SS_CONNECTED; 229 230 BT_DBG("new socket %p", nsk); 231 232 done: 233 release_sock(sk); 234 return err; 235 } 236 237 static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer) 238 { 239 struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr; 240 struct sock *sk = sock->sk; 241 struct l2cap_chan *chan = l2cap_pi(sk)->chan; 242 243 BT_DBG("sock %p, sk %p", sock, sk); 244 245 addr->sa_family = AF_BLUETOOTH; 246 *len = sizeof(struct sockaddr_l2); 247 248 if (peer) { 249 la->l2_psm = chan->psm; 250 bacpy(&la->l2_bdaddr, &bt_sk(sk)->dst); 251 la->l2_cid = cpu_to_le16(chan->dcid); 252 } else { 253 la->l2_psm = chan->sport; 254 bacpy(&la->l2_bdaddr, &bt_sk(sk)->src); 255 la->l2_cid = cpu_to_le16(chan->scid); 256 } 257 258 return 0; 259 } 260 261 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, char __user *optval, int __user *optlen) 262 { 263 struct sock *sk = sock->sk; 264 struct l2cap_chan *chan = l2cap_pi(sk)->chan; 265 struct l2cap_options opts; 266 struct l2cap_conninfo cinfo; 267 int len, err = 0; 268 u32 opt; 269 270 BT_DBG("sk %p", sk); 271 272 if (get_user(len, optlen)) 273 return -EFAULT; 274 275 lock_sock(sk); 276 277 switch (optname) { 278 case L2CAP_OPTIONS: 279 memset(&opts, 0, sizeof(opts)); 280 opts.imtu = chan->imtu; 281 opts.omtu = chan->omtu; 282 opts.flush_to = chan->flush_to; 283 opts.mode = chan->mode; 284 opts.fcs = chan->fcs; 285 opts.max_tx = chan->max_tx; 286 opts.txwin_size = chan->tx_win; 287 288 len = min_t(unsigned int, len, sizeof(opts)); 289 if (copy_to_user(optval, (char *) &opts, len)) 290 err = -EFAULT; 291 292 break; 293 294 case L2CAP_LM: 295 switch (chan->sec_level) { 296 case BT_SECURITY_LOW: 297 opt = L2CAP_LM_AUTH; 298 break; 299 case BT_SECURITY_MEDIUM: 300 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT; 301 break; 302 case BT_SECURITY_HIGH: 303 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT | 304 L2CAP_LM_SECURE; 305 break; 306 default: 307 opt = 0; 308 break; 309 } 310 311 if (test_bit(FLAG_ROLE_SWITCH, &chan->flags)) 312 opt |= L2CAP_LM_MASTER; 313 314 if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags)) 315 opt |= L2CAP_LM_RELIABLE; 316 317 if (put_user(opt, (u32 __user *) optval)) 318 err = -EFAULT; 319 break; 320 321 case L2CAP_CONNINFO: 322 if (sk->sk_state != BT_CONNECTED && 323 !(sk->sk_state == BT_CONNECT2 && 324 bt_sk(sk)->defer_setup)) { 325 err = -ENOTCONN; 326 break; 327 } 328 329 memset(&cinfo, 0, sizeof(cinfo)); 330 cinfo.hci_handle = chan->conn->hcon->handle; 331 memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3); 332 333 len = min_t(unsigned int, len, sizeof(cinfo)); 334 if (copy_to_user(optval, (char *) &cinfo, len)) 335 err = -EFAULT; 336 337 break; 338 339 default: 340 err = -ENOPROTOOPT; 341 break; 342 } 343 344 release_sock(sk); 345 return err; 346 } 347 348 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen) 349 { 350 struct sock *sk = sock->sk; 351 struct l2cap_chan *chan = l2cap_pi(sk)->chan; 352 struct bt_security sec; 353 struct bt_power pwr; 354 int len, err = 0; 355 356 BT_DBG("sk %p", sk); 357 358 if (level == SOL_L2CAP) 359 return l2cap_sock_getsockopt_old(sock, optname, optval, optlen); 360 361 if (level != SOL_BLUETOOTH) 362 return -ENOPROTOOPT; 363 364 if (get_user(len, optlen)) 365 return -EFAULT; 366 367 lock_sock(sk); 368 369 switch (optname) { 370 case BT_SECURITY: 371 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED && 372 chan->chan_type != L2CAP_CHAN_RAW) { 373 err = -EINVAL; 374 break; 375 } 376 377 memset(&sec, 0, sizeof(sec)); 378 sec.level = chan->sec_level; 379 380 if (sk->sk_state == BT_CONNECTED) 381 sec.key_size = chan->conn->hcon->enc_key_size; 382 383 len = min_t(unsigned int, len, sizeof(sec)); 384 if (copy_to_user(optval, (char *) &sec, len)) 385 err = -EFAULT; 386 387 break; 388 389 case BT_DEFER_SETUP: 390 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) { 391 err = -EINVAL; 392 break; 393 } 394 395 if (put_user(bt_sk(sk)->defer_setup, (u32 __user *) optval)) 396 err = -EFAULT; 397 398 break; 399 400 case BT_FLUSHABLE: 401 if (put_user(test_bit(FLAG_FLUSHABLE, &chan->flags), 402 (u32 __user *) optval)) 403 err = -EFAULT; 404 405 break; 406 407 case BT_POWER: 408 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM 409 && sk->sk_type != SOCK_RAW) { 410 err = -EINVAL; 411 break; 412 } 413 414 pwr.force_active = test_bit(FLAG_FORCE_ACTIVE, &chan->flags); 415 416 len = min_t(unsigned int, len, sizeof(pwr)); 417 if (copy_to_user(optval, (char *) &pwr, len)) 418 err = -EFAULT; 419 420 break; 421 422 case BT_CHANNEL_POLICY: 423 if (!enable_hs) { 424 err = -ENOPROTOOPT; 425 break; 426 } 427 428 if (put_user(chan->chan_policy, (u32 __user *) optval)) 429 err = -EFAULT; 430 break; 431 432 default: 433 err = -ENOPROTOOPT; 434 break; 435 } 436 437 release_sock(sk); 438 return err; 439 } 440 441 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, unsigned int optlen) 442 { 443 struct sock *sk = sock->sk; 444 struct l2cap_chan *chan = l2cap_pi(sk)->chan; 445 struct l2cap_options opts; 446 int len, err = 0; 447 u32 opt; 448 449 BT_DBG("sk %p", sk); 450 451 lock_sock(sk); 452 453 switch (optname) { 454 case L2CAP_OPTIONS: 455 if (sk->sk_state == BT_CONNECTED) { 456 err = -EINVAL; 457 break; 458 } 459 460 opts.imtu = chan->imtu; 461 opts.omtu = chan->omtu; 462 opts.flush_to = chan->flush_to; 463 opts.mode = chan->mode; 464 opts.fcs = chan->fcs; 465 opts.max_tx = chan->max_tx; 466 opts.txwin_size = chan->tx_win; 467 468 len = min_t(unsigned int, sizeof(opts), optlen); 469 if (copy_from_user((char *) &opts, optval, len)) { 470 err = -EFAULT; 471 break; 472 } 473 474 if (opts.txwin_size > L2CAP_DEFAULT_EXT_WINDOW) { 475 err = -EINVAL; 476 break; 477 } 478 479 chan->mode = opts.mode; 480 switch (chan->mode) { 481 case L2CAP_MODE_BASIC: 482 clear_bit(CONF_STATE2_DEVICE, &chan->conf_state); 483 break; 484 case L2CAP_MODE_ERTM: 485 case L2CAP_MODE_STREAMING: 486 if (!disable_ertm) 487 break; 488 /* fall through */ 489 default: 490 err = -EINVAL; 491 break; 492 } 493 494 chan->imtu = opts.imtu; 495 chan->omtu = opts.omtu; 496 chan->fcs = opts.fcs; 497 chan->max_tx = opts.max_tx; 498 chan->tx_win = opts.txwin_size; 499 break; 500 501 case L2CAP_LM: 502 if (get_user(opt, (u32 __user *) optval)) { 503 err = -EFAULT; 504 break; 505 } 506 507 if (opt & L2CAP_LM_AUTH) 508 chan->sec_level = BT_SECURITY_LOW; 509 if (opt & L2CAP_LM_ENCRYPT) 510 chan->sec_level = BT_SECURITY_MEDIUM; 511 if (opt & L2CAP_LM_SECURE) 512 chan->sec_level = BT_SECURITY_HIGH; 513 514 if (opt & L2CAP_LM_MASTER) 515 set_bit(FLAG_ROLE_SWITCH, &chan->flags); 516 else 517 clear_bit(FLAG_ROLE_SWITCH, &chan->flags); 518 519 if (opt & L2CAP_LM_RELIABLE) 520 set_bit(FLAG_FORCE_RELIABLE, &chan->flags); 521 else 522 clear_bit(FLAG_FORCE_RELIABLE, &chan->flags); 523 break; 524 525 default: 526 err = -ENOPROTOOPT; 527 break; 528 } 529 530 release_sock(sk); 531 return err; 532 } 533 534 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen) 535 { 536 struct sock *sk = sock->sk; 537 struct l2cap_chan *chan = l2cap_pi(sk)->chan; 538 struct bt_security sec; 539 struct bt_power pwr; 540 struct l2cap_conn *conn; 541 int len, err = 0; 542 u32 opt; 543 544 BT_DBG("sk %p", sk); 545 546 if (level == SOL_L2CAP) 547 return l2cap_sock_setsockopt_old(sock, optname, optval, optlen); 548 549 if (level != SOL_BLUETOOTH) 550 return -ENOPROTOOPT; 551 552 lock_sock(sk); 553 554 switch (optname) { 555 case BT_SECURITY: 556 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED && 557 chan->chan_type != L2CAP_CHAN_RAW) { 558 err = -EINVAL; 559 break; 560 } 561 562 sec.level = BT_SECURITY_LOW; 563 564 len = min_t(unsigned int, sizeof(sec), optlen); 565 if (copy_from_user((char *) &sec, optval, len)) { 566 err = -EFAULT; 567 break; 568 } 569 570 if (sec.level < BT_SECURITY_LOW || 571 sec.level > BT_SECURITY_HIGH) { 572 err = -EINVAL; 573 break; 574 } 575 576 chan->sec_level = sec.level; 577 578 if (!chan->conn) 579 break; 580 581 conn = chan->conn; 582 583 /*change security for LE channels */ 584 if (chan->scid == L2CAP_CID_LE_DATA) { 585 if (!conn->hcon->out) { 586 err = -EINVAL; 587 break; 588 } 589 590 if (smp_conn_security(conn, sec.level)) 591 break; 592 sk->sk_state = BT_CONFIG; 593 chan->state = BT_CONFIG; 594 595 /* or for ACL link, under defer_setup time */ 596 } else if (sk->sk_state == BT_CONNECT2 && 597 bt_sk(sk)->defer_setup) { 598 err = l2cap_chan_check_security(chan); 599 } else { 600 err = -EINVAL; 601 } 602 break; 603 604 case BT_DEFER_SETUP: 605 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) { 606 err = -EINVAL; 607 break; 608 } 609 610 if (get_user(opt, (u32 __user *) optval)) { 611 err = -EFAULT; 612 break; 613 } 614 615 bt_sk(sk)->defer_setup = opt; 616 break; 617 618 case BT_FLUSHABLE: 619 if (get_user(opt, (u32 __user *) optval)) { 620 err = -EFAULT; 621 break; 622 } 623 624 if (opt > BT_FLUSHABLE_ON) { 625 err = -EINVAL; 626 break; 627 } 628 629 if (opt == BT_FLUSHABLE_OFF) { 630 struct l2cap_conn *conn = chan->conn; 631 /* proceed further only when we have l2cap_conn and 632 No Flush support in the LM */ 633 if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) { 634 err = -EINVAL; 635 break; 636 } 637 } 638 639 if (opt) 640 set_bit(FLAG_FLUSHABLE, &chan->flags); 641 else 642 clear_bit(FLAG_FLUSHABLE, &chan->flags); 643 break; 644 645 case BT_POWER: 646 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED && 647 chan->chan_type != L2CAP_CHAN_RAW) { 648 err = -EINVAL; 649 break; 650 } 651 652 pwr.force_active = BT_POWER_FORCE_ACTIVE_ON; 653 654 len = min_t(unsigned int, sizeof(pwr), optlen); 655 if (copy_from_user((char *) &pwr, optval, len)) { 656 err = -EFAULT; 657 break; 658 } 659 660 if (pwr.force_active) 661 set_bit(FLAG_FORCE_ACTIVE, &chan->flags); 662 else 663 clear_bit(FLAG_FORCE_ACTIVE, &chan->flags); 664 break; 665 666 case BT_CHANNEL_POLICY: 667 if (!enable_hs) { 668 err = -ENOPROTOOPT; 669 break; 670 } 671 672 if (get_user(opt, (u32 __user *) optval)) { 673 err = -EFAULT; 674 break; 675 } 676 677 if (opt > BT_CHANNEL_POLICY_AMP_PREFERRED) { 678 err = -EINVAL; 679 break; 680 } 681 682 if (chan->mode != L2CAP_MODE_ERTM && 683 chan->mode != L2CAP_MODE_STREAMING) { 684 err = -EOPNOTSUPP; 685 break; 686 } 687 688 chan->chan_policy = (u8) opt; 689 break; 690 691 default: 692 err = -ENOPROTOOPT; 693 break; 694 } 695 696 release_sock(sk); 697 return err; 698 } 699 700 static int l2cap_sock_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len) 701 { 702 struct sock *sk = sock->sk; 703 struct l2cap_chan *chan = l2cap_pi(sk)->chan; 704 int err; 705 706 BT_DBG("sock %p, sk %p", sock, sk); 707 708 err = sock_error(sk); 709 if (err) 710 return err; 711 712 if (msg->msg_flags & MSG_OOB) 713 return -EOPNOTSUPP; 714 715 lock_sock(sk); 716 717 if (sk->sk_state != BT_CONNECTED) { 718 release_sock(sk); 719 return -ENOTCONN; 720 } 721 722 err = l2cap_chan_send(chan, msg, len, sk->sk_priority); 723 724 release_sock(sk); 725 return err; 726 } 727 728 static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len, int flags) 729 { 730 struct sock *sk = sock->sk; 731 struct l2cap_pinfo *pi = l2cap_pi(sk); 732 int err; 733 734 lock_sock(sk); 735 736 if (sk->sk_state == BT_CONNECT2 && bt_sk(sk)->defer_setup) { 737 sk->sk_state = BT_CONFIG; 738 pi->chan->state = BT_CONFIG; 739 740 __l2cap_connect_rsp_defer(pi->chan); 741 release_sock(sk); 742 return 0; 743 } 744 745 release_sock(sk); 746 747 if (sock->type == SOCK_STREAM) 748 err = bt_sock_stream_recvmsg(iocb, sock, msg, len, flags); 749 else 750 err = bt_sock_recvmsg(iocb, sock, msg, len, flags); 751 752 if (pi->chan->mode != L2CAP_MODE_ERTM) 753 return err; 754 755 /* Attempt to put pending rx data in the socket buffer */ 756 757 lock_sock(sk); 758 759 if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state)) 760 goto done; 761 762 if (pi->rx_busy_skb) { 763 if (!sock_queue_rcv_skb(sk, pi->rx_busy_skb)) 764 pi->rx_busy_skb = NULL; 765 else 766 goto done; 767 } 768 769 /* Restore data flow when half of the receive buffer is 770 * available. This avoids resending large numbers of 771 * frames. 772 */ 773 if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf >> 1) 774 l2cap_chan_busy(pi->chan, 0); 775 776 done: 777 release_sock(sk); 778 return err; 779 } 780 781 /* Kill socket (only if zapped and orphan) 782 * Must be called on unlocked socket. 783 */ 784 static void l2cap_sock_kill(struct sock *sk) 785 { 786 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket) 787 return; 788 789 BT_DBG("sk %p state %s", sk, state_to_string(sk->sk_state)); 790 791 /* Kill poor orphan */ 792 793 l2cap_chan_destroy(l2cap_pi(sk)->chan); 794 sock_set_flag(sk, SOCK_DEAD); 795 sock_put(sk); 796 } 797 798 static int l2cap_sock_shutdown(struct socket *sock, int how) 799 { 800 struct sock *sk = sock->sk; 801 struct l2cap_chan *chan; 802 struct l2cap_conn *conn; 803 int err = 0; 804 805 BT_DBG("sock %p, sk %p", sock, sk); 806 807 if (!sk) 808 return 0; 809 810 chan = l2cap_pi(sk)->chan; 811 conn = chan->conn; 812 813 if (conn) 814 mutex_lock(&conn->chan_lock); 815 816 l2cap_chan_lock(chan); 817 lock_sock(sk); 818 819 if (!sk->sk_shutdown) { 820 if (chan->mode == L2CAP_MODE_ERTM) 821 err = __l2cap_wait_ack(sk); 822 823 sk->sk_shutdown = SHUTDOWN_MASK; 824 825 release_sock(sk); 826 l2cap_chan_close(chan, 0); 827 lock_sock(sk); 828 829 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime) 830 err = bt_sock_wait_state(sk, BT_CLOSED, 831 sk->sk_lingertime); 832 } 833 834 if (!err && sk->sk_err) 835 err = -sk->sk_err; 836 837 release_sock(sk); 838 l2cap_chan_unlock(chan); 839 840 if (conn) 841 mutex_unlock(&conn->chan_lock); 842 843 return err; 844 } 845 846 static int l2cap_sock_release(struct socket *sock) 847 { 848 struct sock *sk = sock->sk; 849 int err; 850 851 BT_DBG("sock %p, sk %p", sock, sk); 852 853 if (!sk) 854 return 0; 855 856 err = l2cap_sock_shutdown(sock, 2); 857 858 sock_orphan(sk); 859 l2cap_sock_kill(sk); 860 return err; 861 } 862 863 static struct l2cap_chan *l2cap_sock_new_connection_cb(void *data) 864 { 865 struct sock *sk, *parent = data; 866 867 sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP, 868 GFP_ATOMIC); 869 if (!sk) 870 return NULL; 871 872 bt_sock_reclassify_lock(sk, BTPROTO_L2CAP); 873 874 l2cap_sock_init(sk, parent); 875 876 return l2cap_pi(sk)->chan; 877 } 878 879 static int l2cap_sock_recv_cb(void *data, struct sk_buff *skb) 880 { 881 int err; 882 struct sock *sk = data; 883 struct l2cap_pinfo *pi = l2cap_pi(sk); 884 885 lock_sock(sk); 886 887 if (pi->rx_busy_skb) { 888 err = -ENOMEM; 889 goto done; 890 } 891 892 err = sock_queue_rcv_skb(sk, skb); 893 894 /* For ERTM, handle one skb that doesn't fit into the recv 895 * buffer. This is important to do because the data frames 896 * have already been acked, so the skb cannot be discarded. 897 * 898 * Notify the l2cap core that the buffer is full, so the 899 * LOCAL_BUSY state is entered and no more frames are 900 * acked and reassembled until there is buffer space 901 * available. 902 */ 903 if (err < 0 && pi->chan->mode == L2CAP_MODE_ERTM) { 904 pi->rx_busy_skb = skb; 905 l2cap_chan_busy(pi->chan, 1); 906 err = 0; 907 } 908 909 done: 910 release_sock(sk); 911 912 return err; 913 } 914 915 static void l2cap_sock_close_cb(void *data) 916 { 917 struct sock *sk = data; 918 919 l2cap_sock_kill(sk); 920 } 921 922 static void l2cap_sock_state_change_cb(void *data, int state) 923 { 924 struct sock *sk = data; 925 926 sk->sk_state = state; 927 } 928 929 static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan, 930 unsigned long len, int nb) 931 { 932 struct sk_buff *skb; 933 int err; 934 935 skb = bt_skb_send_alloc(chan->sk, len, nb, &err); 936 if (!skb) 937 return ERR_PTR(err); 938 939 return skb; 940 } 941 942 static struct l2cap_ops l2cap_chan_ops = { 943 .name = "L2CAP Socket Interface", 944 .new_connection = l2cap_sock_new_connection_cb, 945 .recv = l2cap_sock_recv_cb, 946 .close = l2cap_sock_close_cb, 947 .state_change = l2cap_sock_state_change_cb, 948 .alloc_skb = l2cap_sock_alloc_skb_cb, 949 }; 950 951 static void l2cap_sock_destruct(struct sock *sk) 952 { 953 BT_DBG("sk %p", sk); 954 955 if (l2cap_pi(sk)->rx_busy_skb) { 956 kfree_skb(l2cap_pi(sk)->rx_busy_skb); 957 l2cap_pi(sk)->rx_busy_skb = NULL; 958 } 959 960 skb_queue_purge(&sk->sk_receive_queue); 961 skb_queue_purge(&sk->sk_write_queue); 962 } 963 964 static void l2cap_sock_init(struct sock *sk, struct sock *parent) 965 { 966 struct l2cap_pinfo *pi = l2cap_pi(sk); 967 struct l2cap_chan *chan = pi->chan; 968 969 BT_DBG("sk %p", sk); 970 971 if (parent) { 972 struct l2cap_chan *pchan = l2cap_pi(parent)->chan; 973 974 sk->sk_type = parent->sk_type; 975 bt_sk(sk)->defer_setup = bt_sk(parent)->defer_setup; 976 977 chan->chan_type = pchan->chan_type; 978 chan->imtu = pchan->imtu; 979 chan->omtu = pchan->omtu; 980 chan->conf_state = pchan->conf_state; 981 chan->mode = pchan->mode; 982 chan->fcs = pchan->fcs; 983 chan->max_tx = pchan->max_tx; 984 chan->tx_win = pchan->tx_win; 985 chan->tx_win_max = pchan->tx_win_max; 986 chan->sec_level = pchan->sec_level; 987 chan->flags = pchan->flags; 988 989 security_sk_clone(parent, sk); 990 } else { 991 992 switch (sk->sk_type) { 993 case SOCK_RAW: 994 chan->chan_type = L2CAP_CHAN_RAW; 995 break; 996 case SOCK_DGRAM: 997 chan->chan_type = L2CAP_CHAN_CONN_LESS; 998 break; 999 case SOCK_SEQPACKET: 1000 case SOCK_STREAM: 1001 chan->chan_type = L2CAP_CHAN_CONN_ORIENTED; 1002 break; 1003 } 1004 1005 chan->imtu = L2CAP_DEFAULT_MTU; 1006 chan->omtu = 0; 1007 if (!disable_ertm && sk->sk_type == SOCK_STREAM) { 1008 chan->mode = L2CAP_MODE_ERTM; 1009 set_bit(CONF_STATE2_DEVICE, &chan->conf_state); 1010 } else { 1011 chan->mode = L2CAP_MODE_BASIC; 1012 } 1013 1014 l2cap_chan_set_defaults(chan); 1015 } 1016 1017 /* Default config options */ 1018 chan->flush_to = L2CAP_DEFAULT_FLUSH_TO; 1019 1020 chan->data = sk; 1021 chan->ops = &l2cap_chan_ops; 1022 } 1023 1024 static struct proto l2cap_proto = { 1025 .name = "L2CAP", 1026 .owner = THIS_MODULE, 1027 .obj_size = sizeof(struct l2cap_pinfo) 1028 }; 1029 1030 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio) 1031 { 1032 struct sock *sk; 1033 struct l2cap_chan *chan; 1034 1035 sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto); 1036 if (!sk) 1037 return NULL; 1038 1039 sock_init_data(sock, sk); 1040 INIT_LIST_HEAD(&bt_sk(sk)->accept_q); 1041 1042 sk->sk_destruct = l2cap_sock_destruct; 1043 sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT; 1044 1045 sock_reset_flag(sk, SOCK_ZAPPED); 1046 1047 sk->sk_protocol = proto; 1048 sk->sk_state = BT_OPEN; 1049 1050 chan = l2cap_chan_create(); 1051 if (!chan) { 1052 l2cap_sock_kill(sk); 1053 return NULL; 1054 } 1055 1056 chan->sk = sk; 1057 1058 l2cap_pi(sk)->chan = chan; 1059 1060 return sk; 1061 } 1062 1063 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol, 1064 int kern) 1065 { 1066 struct sock *sk; 1067 1068 BT_DBG("sock %p", sock); 1069 1070 sock->state = SS_UNCONNECTED; 1071 1072 if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM && 1073 sock->type != SOCK_DGRAM && sock->type != SOCK_RAW) 1074 return -ESOCKTNOSUPPORT; 1075 1076 if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW)) 1077 return -EPERM; 1078 1079 sock->ops = &l2cap_sock_ops; 1080 1081 sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC); 1082 if (!sk) 1083 return -ENOMEM; 1084 1085 l2cap_sock_init(sk, NULL); 1086 return 0; 1087 } 1088 1089 static const struct proto_ops l2cap_sock_ops = { 1090 .family = PF_BLUETOOTH, 1091 .owner = THIS_MODULE, 1092 .release = l2cap_sock_release, 1093 .bind = l2cap_sock_bind, 1094 .connect = l2cap_sock_connect, 1095 .listen = l2cap_sock_listen, 1096 .accept = l2cap_sock_accept, 1097 .getname = l2cap_sock_getname, 1098 .sendmsg = l2cap_sock_sendmsg, 1099 .recvmsg = l2cap_sock_recvmsg, 1100 .poll = bt_sock_poll, 1101 .ioctl = bt_sock_ioctl, 1102 .mmap = sock_no_mmap, 1103 .socketpair = sock_no_socketpair, 1104 .shutdown = l2cap_sock_shutdown, 1105 .setsockopt = l2cap_sock_setsockopt, 1106 .getsockopt = l2cap_sock_getsockopt 1107 }; 1108 1109 static const struct net_proto_family l2cap_sock_family_ops = { 1110 .family = PF_BLUETOOTH, 1111 .owner = THIS_MODULE, 1112 .create = l2cap_sock_create, 1113 }; 1114 1115 int __init l2cap_init_sockets(void) 1116 { 1117 int err; 1118 1119 err = proto_register(&l2cap_proto, 0); 1120 if (err < 0) 1121 return err; 1122 1123 err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops); 1124 if (err < 0) 1125 goto error; 1126 1127 BT_INFO("L2CAP socket layer initialized"); 1128 1129 return 0; 1130 1131 error: 1132 BT_ERR("L2CAP socket registration failed"); 1133 proto_unregister(&l2cap_proto); 1134 return err; 1135 } 1136 1137 void l2cap_cleanup_sockets(void) 1138 { 1139 if (bt_sock_unregister(BTPROTO_L2CAP) < 0) 1140 BT_ERR("L2CAP socket unregistration failed"); 1141 1142 proto_unregister(&l2cap_proto); 1143 } 1144