xref: /linux/net/bluetooth/sco.c (revision 07fdad3a93756b872da7b53647715c48d0f4a2d0)
1 /*
2    BlueZ - Bluetooth protocol stack for Linux
3    Copyright (C) 2000-2001 Qualcomm Incorporated
4 
5    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
6 
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License version 2 as
9    published by the Free Software Foundation;
10 
11    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
14    IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
15    CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
16    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 
20    ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
21    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
22    SOFTWARE IS DISCLAIMED.
23 */
24 
25 /* Bluetooth SCO sockets. */
26 
27 #include <linux/module.h>
28 #include <linux/debugfs.h>
29 #include <linux/seq_file.h>
30 #include <linux/sched/signal.h>
31 
32 #include <net/bluetooth/bluetooth.h>
33 #include <net/bluetooth/hci_core.h>
34 #include <net/bluetooth/sco.h>
35 
36 static bool disable_esco;
37 
38 static const struct proto_ops sco_sock_ops;
39 
40 static struct bt_sock_list sco_sk_list = {
41 	.lock = __RW_LOCK_UNLOCKED(sco_sk_list.lock)
42 };
43 
44 /* ---- SCO connections ---- */
45 struct sco_conn {
46 	struct hci_conn	*hcon;
47 
48 	spinlock_t	lock;
49 	struct sock	*sk;
50 
51 	struct delayed_work	timeout_work;
52 
53 	unsigned int    mtu;
54 	struct kref	ref;
55 };
56 
57 #define sco_conn_lock(c)	spin_lock(&c->lock)
58 #define sco_conn_unlock(c)	spin_unlock(&c->lock)
59 
60 static void sco_sock_close(struct sock *sk);
61 static void sco_sock_kill(struct sock *sk);
62 
63 /* ----- SCO socket info ----- */
64 #define sco_pi(sk) ((struct sco_pinfo *) sk)
65 
66 struct sco_pinfo {
67 	struct bt_sock	bt;
68 	bdaddr_t	src;
69 	bdaddr_t	dst;
70 	__u32		flags;
71 	__u16		setting;
72 	struct bt_codec codec;
73 	struct sco_conn	*conn;
74 };
75 
76 /* ---- SCO timers ---- */
77 #define SCO_CONN_TIMEOUT	(HZ * 40)
78 #define SCO_DISCONN_TIMEOUT	(HZ * 2)
79 
80 static void sco_conn_free(struct kref *ref)
81 {
82 	struct sco_conn *conn = container_of(ref, struct sco_conn, ref);
83 
84 	BT_DBG("conn %p", conn);
85 
86 	if (conn->sk)
87 		sco_pi(conn->sk)->conn = NULL;
88 
89 	if (conn->hcon) {
90 		conn->hcon->sco_data = NULL;
91 		hci_conn_drop(conn->hcon);
92 	}
93 
94 	/* Ensure no more work items will run since hci_conn has been dropped */
95 	disable_delayed_work_sync(&conn->timeout_work);
96 
97 	kfree(conn);
98 }
99 
100 static void sco_conn_put(struct sco_conn *conn)
101 {
102 	if (!conn)
103 		return;
104 
105 	BT_DBG("conn %p refcnt %d", conn, kref_read(&conn->ref));
106 
107 	kref_put(&conn->ref, sco_conn_free);
108 }
109 
110 static struct sco_conn *sco_conn_hold(struct sco_conn *conn)
111 {
112 	BT_DBG("conn %p refcnt %u", conn, kref_read(&conn->ref));
113 
114 	kref_get(&conn->ref);
115 	return conn;
116 }
117 
118 static struct sco_conn *sco_conn_hold_unless_zero(struct sco_conn *conn)
119 {
120 	if (!conn)
121 		return NULL;
122 
123 	BT_DBG("conn %p refcnt %u", conn, kref_read(&conn->ref));
124 
125 	if (!kref_get_unless_zero(&conn->ref))
126 		return NULL;
127 
128 	return conn;
129 }
130 
131 static struct sock *sco_sock_hold(struct sco_conn *conn)
132 {
133 	if (!conn || !bt_sock_linked(&sco_sk_list, conn->sk))
134 		return NULL;
135 
136 	sock_hold(conn->sk);
137 
138 	return conn->sk;
139 }
140 
141 static void sco_sock_timeout(struct work_struct *work)
142 {
143 	struct sco_conn *conn = container_of(work, struct sco_conn,
144 					     timeout_work.work);
145 	struct sock *sk;
146 
147 	conn = sco_conn_hold_unless_zero(conn);
148 	if (!conn)
149 		return;
150 
151 	sco_conn_lock(conn);
152 	if (!conn->hcon) {
153 		sco_conn_unlock(conn);
154 		sco_conn_put(conn);
155 		return;
156 	}
157 	sk = sco_sock_hold(conn);
158 	sco_conn_unlock(conn);
159 	sco_conn_put(conn);
160 
161 	if (!sk)
162 		return;
163 
164 	BT_DBG("sock %p state %d", sk, sk->sk_state);
165 
166 	lock_sock(sk);
167 	sk->sk_err = ETIMEDOUT;
168 	sk->sk_state_change(sk);
169 	release_sock(sk);
170 	sock_put(sk);
171 }
172 
173 static void sco_sock_set_timer(struct sock *sk, long timeout)
174 {
175 	if (!sco_pi(sk)->conn)
176 		return;
177 
178 	BT_DBG("sock %p state %d timeout %ld", sk, sk->sk_state, timeout);
179 	cancel_delayed_work(&sco_pi(sk)->conn->timeout_work);
180 	schedule_delayed_work(&sco_pi(sk)->conn->timeout_work, timeout);
181 }
182 
183 static void sco_sock_clear_timer(struct sock *sk)
184 {
185 	if (!sco_pi(sk)->conn)
186 		return;
187 
188 	BT_DBG("sock %p state %d", sk, sk->sk_state);
189 	cancel_delayed_work(&sco_pi(sk)->conn->timeout_work);
190 }
191 
192 /* ---- SCO connections ---- */
193 static struct sco_conn *sco_conn_add(struct hci_conn *hcon)
194 {
195 	struct sco_conn *conn = hcon->sco_data;
196 
197 	conn = sco_conn_hold_unless_zero(conn);
198 	if (conn) {
199 		if (!conn->hcon) {
200 			sco_conn_lock(conn);
201 			conn->hcon = hcon;
202 			sco_conn_unlock(conn);
203 		}
204 		return conn;
205 	}
206 
207 	conn = kzalloc(sizeof(struct sco_conn), GFP_KERNEL);
208 	if (!conn)
209 		return NULL;
210 
211 	kref_init(&conn->ref);
212 	spin_lock_init(&conn->lock);
213 	INIT_DELAYED_WORK(&conn->timeout_work, sco_sock_timeout);
214 
215 	hcon->sco_data = conn;
216 	conn->hcon = hcon;
217 	conn->mtu = hcon->mtu;
218 
219 	if (hcon->mtu > 0)
220 		conn->mtu = hcon->mtu;
221 	else
222 		conn->mtu = 60;
223 
224 	BT_DBG("hcon %p conn %p", hcon, conn);
225 
226 	return conn;
227 }
228 
229 /* Delete channel.
230  * Must be called on the locked socket. */
231 static void sco_chan_del(struct sock *sk, int err)
232 {
233 	struct sco_conn *conn;
234 
235 	conn = sco_pi(sk)->conn;
236 	sco_pi(sk)->conn = NULL;
237 
238 	BT_DBG("sk %p, conn %p, err %d", sk, conn, err);
239 
240 	if (conn) {
241 		sco_conn_lock(conn);
242 		conn->sk = NULL;
243 		sco_conn_unlock(conn);
244 		sco_conn_put(conn);
245 	}
246 
247 	sk->sk_state = BT_CLOSED;
248 	sk->sk_err   = err;
249 	sk->sk_state_change(sk);
250 
251 	sock_set_flag(sk, SOCK_ZAPPED);
252 }
253 
254 static void sco_conn_del(struct hci_conn *hcon, int err)
255 {
256 	struct sco_conn *conn = hcon->sco_data;
257 	struct sock *sk;
258 
259 	conn = sco_conn_hold_unless_zero(conn);
260 	if (!conn)
261 		return;
262 
263 	BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
264 
265 	sco_conn_lock(conn);
266 	sk = sco_sock_hold(conn);
267 	sco_conn_unlock(conn);
268 	sco_conn_put(conn);
269 
270 	if (!sk) {
271 		sco_conn_put(conn);
272 		return;
273 	}
274 
275 	/* Kill socket */
276 	lock_sock(sk);
277 	sco_sock_clear_timer(sk);
278 	sco_chan_del(sk, err);
279 	release_sock(sk);
280 	sock_put(sk);
281 }
282 
283 static void __sco_chan_add(struct sco_conn *conn, struct sock *sk,
284 			   struct sock *parent)
285 {
286 	BT_DBG("conn %p", conn);
287 
288 	sco_pi(sk)->conn = conn;
289 	conn->sk = sk;
290 
291 	if (parent)
292 		bt_accept_enqueue(parent, sk, true);
293 }
294 
295 static int sco_chan_add(struct sco_conn *conn, struct sock *sk,
296 			struct sock *parent)
297 {
298 	int err = 0;
299 
300 	sco_conn_lock(conn);
301 	if (conn->sk)
302 		err = -EBUSY;
303 	else
304 		__sco_chan_add(conn, sk, parent);
305 
306 	sco_conn_unlock(conn);
307 	return err;
308 }
309 
310 static int sco_connect(struct sock *sk)
311 {
312 	struct sco_conn *conn;
313 	struct hci_conn *hcon;
314 	struct hci_dev  *hdev;
315 	int err, type;
316 
317 	BT_DBG("%pMR -> %pMR", &sco_pi(sk)->src, &sco_pi(sk)->dst);
318 
319 	hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src, BDADDR_BREDR);
320 	if (!hdev)
321 		return -EHOSTUNREACH;
322 
323 	hci_dev_lock(hdev);
324 
325 	if (lmp_esco_capable(hdev) && !disable_esco)
326 		type = ESCO_LINK;
327 	else
328 		type = SCO_LINK;
329 
330 	switch (sco_pi(sk)->setting & SCO_AIRMODE_MASK) {
331 	case SCO_AIRMODE_TRANSP:
332 		if (!lmp_transp_capable(hdev) || !lmp_esco_capable(hdev)) {
333 			err = -EOPNOTSUPP;
334 			goto unlock;
335 		}
336 		break;
337 	}
338 
339 	hcon = hci_connect_sco(hdev, type, &sco_pi(sk)->dst,
340 			       sco_pi(sk)->setting, &sco_pi(sk)->codec,
341 			       READ_ONCE(sk->sk_sndtimeo));
342 	if (IS_ERR(hcon)) {
343 		err = PTR_ERR(hcon);
344 		goto unlock;
345 	}
346 
347 	conn = sco_conn_add(hcon);
348 	if (!conn) {
349 		hci_conn_drop(hcon);
350 		err = -ENOMEM;
351 		goto unlock;
352 	}
353 
354 	lock_sock(sk);
355 
356 	err = sco_chan_add(conn, sk, NULL);
357 	if (err) {
358 		release_sock(sk);
359 		goto unlock;
360 	}
361 
362 	/* Update source addr of the socket */
363 	bacpy(&sco_pi(sk)->src, &hcon->src);
364 
365 	if (hcon->state == BT_CONNECTED) {
366 		sco_sock_clear_timer(sk);
367 		sk->sk_state = BT_CONNECTED;
368 	} else {
369 		sk->sk_state = BT_CONNECT;
370 		sco_sock_set_timer(sk, READ_ONCE(sk->sk_sndtimeo));
371 	}
372 
373 	release_sock(sk);
374 
375 unlock:
376 	hci_dev_unlock(hdev);
377 	hci_dev_put(hdev);
378 	return err;
379 }
380 
381 static int sco_send_frame(struct sock *sk, struct sk_buff *skb,
382 			  const struct sockcm_cookie *sockc)
383 {
384 	struct sco_conn *conn = sco_pi(sk)->conn;
385 	int len = skb->len;
386 
387 	/* Check outgoing MTU */
388 	if (len > conn->mtu)
389 		return -EINVAL;
390 
391 	BT_DBG("sk %p len %d", sk, len);
392 
393 	hci_setup_tx_timestamp(skb, 1, sockc);
394 	hci_send_sco(conn->hcon, skb);
395 
396 	return len;
397 }
398 
399 static void sco_recv_frame(struct sco_conn *conn, struct sk_buff *skb)
400 {
401 	struct sock *sk;
402 
403 	sco_conn_lock(conn);
404 	sk = conn->sk;
405 	sco_conn_unlock(conn);
406 
407 	if (!sk)
408 		goto drop;
409 
410 	BT_DBG("sk %p len %u", sk, skb->len);
411 
412 	if (sk->sk_state != BT_CONNECTED)
413 		goto drop;
414 
415 	if (!sock_queue_rcv_skb(sk, skb))
416 		return;
417 
418 drop:
419 	kfree_skb(skb);
420 }
421 
422 /* -------- Socket interface ---------- */
423 static struct sock *__sco_get_sock_listen_by_addr(bdaddr_t *ba)
424 {
425 	struct sock *sk;
426 
427 	sk_for_each(sk, &sco_sk_list.head) {
428 		if (sk->sk_state != BT_LISTEN)
429 			continue;
430 
431 		if (!bacmp(&sco_pi(sk)->src, ba))
432 			return sk;
433 	}
434 
435 	return NULL;
436 }
437 
438 /* Find socket listening on source bdaddr.
439  * Returns closest match.
440  */
441 static struct sock *sco_get_sock_listen(bdaddr_t *src)
442 {
443 	struct sock *sk = NULL, *sk1 = NULL;
444 
445 	read_lock(&sco_sk_list.lock);
446 
447 	sk_for_each(sk, &sco_sk_list.head) {
448 		if (sk->sk_state != BT_LISTEN)
449 			continue;
450 
451 		/* Exact match. */
452 		if (!bacmp(&sco_pi(sk)->src, src))
453 			break;
454 
455 		/* Closest match */
456 		if (!bacmp(&sco_pi(sk)->src, BDADDR_ANY))
457 			sk1 = sk;
458 	}
459 
460 	read_unlock(&sco_sk_list.lock);
461 
462 	return sk ? sk : sk1;
463 }
464 
465 static void sco_sock_destruct(struct sock *sk)
466 {
467 	BT_DBG("sk %p", sk);
468 
469 	sco_conn_put(sco_pi(sk)->conn);
470 
471 	skb_queue_purge(&sk->sk_receive_queue);
472 	skb_queue_purge(&sk->sk_write_queue);
473 }
474 
475 static void sco_sock_cleanup_listen(struct sock *parent)
476 {
477 	struct sock *sk;
478 
479 	BT_DBG("parent %p", parent);
480 
481 	/* Close not yet accepted channels */
482 	while ((sk = bt_accept_dequeue(parent, NULL))) {
483 		sco_sock_close(sk);
484 		sco_sock_kill(sk);
485 	}
486 
487 	parent->sk_state  = BT_CLOSED;
488 	sock_set_flag(parent, SOCK_ZAPPED);
489 }
490 
491 /* Kill socket (only if zapped and orphan)
492  * Must be called on unlocked socket.
493  */
494 static void sco_sock_kill(struct sock *sk)
495 {
496 	if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
497 		return;
498 
499 	BT_DBG("sk %p state %d", sk, sk->sk_state);
500 
501 	/* Sock is dead, so set conn->sk to NULL to avoid possible UAF */
502 	if (sco_pi(sk)->conn) {
503 		sco_conn_lock(sco_pi(sk)->conn);
504 		sco_pi(sk)->conn->sk = NULL;
505 		sco_conn_unlock(sco_pi(sk)->conn);
506 	}
507 
508 	/* Kill poor orphan */
509 	bt_sock_unlink(&sco_sk_list, sk);
510 	sock_set_flag(sk, SOCK_DEAD);
511 	sock_put(sk);
512 }
513 
514 static void __sco_sock_close(struct sock *sk)
515 {
516 	BT_DBG("sk %p state %d socket %p", sk, sk->sk_state, sk->sk_socket);
517 
518 	switch (sk->sk_state) {
519 	case BT_LISTEN:
520 		sco_sock_cleanup_listen(sk);
521 		break;
522 
523 	case BT_CONNECTED:
524 	case BT_CONFIG:
525 	case BT_CONNECT2:
526 	case BT_CONNECT:
527 	case BT_DISCONN:
528 		sco_chan_del(sk, ECONNRESET);
529 		break;
530 
531 	default:
532 		sock_set_flag(sk, SOCK_ZAPPED);
533 		break;
534 	}
535 
536 }
537 
538 /* Must be called on unlocked socket. */
539 static void sco_sock_close(struct sock *sk)
540 {
541 	lock_sock(sk);
542 	sco_sock_clear_timer(sk);
543 	__sco_sock_close(sk);
544 	release_sock(sk);
545 }
546 
547 static void sco_sock_init(struct sock *sk, struct sock *parent)
548 {
549 	BT_DBG("sk %p", sk);
550 
551 	if (parent) {
552 		sk->sk_type = parent->sk_type;
553 		bt_sk(sk)->flags = bt_sk(parent)->flags;
554 		security_sk_clone(parent, sk);
555 	}
556 }
557 
558 static struct proto sco_proto = {
559 	.name		= "SCO",
560 	.owner		= THIS_MODULE,
561 	.obj_size	= sizeof(struct sco_pinfo)
562 };
563 
564 static struct sock *sco_sock_alloc(struct net *net, struct socket *sock,
565 				   int proto, gfp_t prio, int kern)
566 {
567 	struct sock *sk;
568 
569 	sk = bt_sock_alloc(net, sock, &sco_proto, proto, prio, kern);
570 	if (!sk)
571 		return NULL;
572 
573 	sk->sk_destruct = sco_sock_destruct;
574 	sk->sk_sndtimeo = SCO_CONN_TIMEOUT;
575 
576 	sco_pi(sk)->setting = BT_VOICE_CVSD_16BIT;
577 	sco_pi(sk)->codec.id = BT_CODEC_CVSD;
578 	sco_pi(sk)->codec.cid = 0xffff;
579 	sco_pi(sk)->codec.vid = 0xffff;
580 	sco_pi(sk)->codec.data_path = 0x00;
581 
582 	bt_sock_link(&sco_sk_list, sk);
583 	return sk;
584 }
585 
586 static int sco_sock_create(struct net *net, struct socket *sock, int protocol,
587 			   int kern)
588 {
589 	struct sock *sk;
590 
591 	BT_DBG("sock %p", sock);
592 
593 	sock->state = SS_UNCONNECTED;
594 
595 	if (sock->type != SOCK_SEQPACKET)
596 		return -ESOCKTNOSUPPORT;
597 
598 	sock->ops = &sco_sock_ops;
599 
600 	sk = sco_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern);
601 	if (!sk)
602 		return -ENOMEM;
603 
604 	sco_sock_init(sk, NULL);
605 	return 0;
606 }
607 
608 static int sco_sock_bind(struct socket *sock, struct sockaddr *addr,
609 			 int addr_len)
610 {
611 	struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
612 	struct sock *sk = sock->sk;
613 	int err = 0;
614 
615 	if (!addr || addr_len < sizeof(struct sockaddr_sco) ||
616 	    addr->sa_family != AF_BLUETOOTH)
617 		return -EINVAL;
618 
619 	BT_DBG("sk %p %pMR", sk, &sa->sco_bdaddr);
620 
621 	lock_sock(sk);
622 
623 	if (sk->sk_state != BT_OPEN) {
624 		err = -EBADFD;
625 		goto done;
626 	}
627 
628 	if (sk->sk_type != SOCK_SEQPACKET) {
629 		err = -EINVAL;
630 		goto done;
631 	}
632 
633 	bacpy(&sco_pi(sk)->src, &sa->sco_bdaddr);
634 
635 	sk->sk_state = BT_BOUND;
636 
637 done:
638 	release_sock(sk);
639 	return err;
640 }
641 
642 static int sco_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
643 {
644 	struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
645 	struct sock *sk = sock->sk;
646 	int err;
647 
648 	BT_DBG("sk %p", sk);
649 
650 	if (alen < sizeof(struct sockaddr_sco) ||
651 	    addr->sa_family != AF_BLUETOOTH)
652 		return -EINVAL;
653 
654 	if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND)
655 		return -EBADFD;
656 
657 	if (sk->sk_type != SOCK_SEQPACKET)
658 		err = -EINVAL;
659 
660 	lock_sock(sk);
661 	/* Set destination address and psm */
662 	bacpy(&sco_pi(sk)->dst, &sa->sco_bdaddr);
663 	release_sock(sk);
664 
665 	err = sco_connect(sk);
666 	if (err)
667 		return err;
668 
669 	lock_sock(sk);
670 
671 	err = bt_sock_wait_state(sk, BT_CONNECTED,
672 				 sock_sndtimeo(sk, flags & O_NONBLOCK));
673 
674 	release_sock(sk);
675 	return err;
676 }
677 
678 static int sco_sock_listen(struct socket *sock, int backlog)
679 {
680 	struct sock *sk = sock->sk;
681 	bdaddr_t *src = &sco_pi(sk)->src;
682 	int err = 0;
683 
684 	BT_DBG("sk %p backlog %d", sk, backlog);
685 
686 	lock_sock(sk);
687 
688 	if (sk->sk_state != BT_BOUND) {
689 		err = -EBADFD;
690 		goto done;
691 	}
692 
693 	if (sk->sk_type != SOCK_SEQPACKET) {
694 		err = -EINVAL;
695 		goto done;
696 	}
697 
698 	write_lock(&sco_sk_list.lock);
699 
700 	if (__sco_get_sock_listen_by_addr(src)) {
701 		err = -EADDRINUSE;
702 		goto unlock;
703 	}
704 
705 	sk->sk_max_ack_backlog = backlog;
706 	sk->sk_ack_backlog = 0;
707 
708 	sk->sk_state = BT_LISTEN;
709 
710 unlock:
711 	write_unlock(&sco_sk_list.lock);
712 
713 done:
714 	release_sock(sk);
715 	return err;
716 }
717 
718 static int sco_sock_accept(struct socket *sock, struct socket *newsock,
719 			   struct proto_accept_arg *arg)
720 {
721 	DEFINE_WAIT_FUNC(wait, woken_wake_function);
722 	struct sock *sk = sock->sk, *ch;
723 	long timeo;
724 	int err = 0;
725 
726 	lock_sock(sk);
727 
728 	timeo = sock_rcvtimeo(sk, arg->flags & O_NONBLOCK);
729 
730 	BT_DBG("sk %p timeo %ld", sk, timeo);
731 
732 	/* Wait for an incoming connection. (wake-one). */
733 	add_wait_queue_exclusive(sk_sleep(sk), &wait);
734 	while (1) {
735 		if (sk->sk_state != BT_LISTEN) {
736 			err = -EBADFD;
737 			break;
738 		}
739 
740 		ch = bt_accept_dequeue(sk, newsock);
741 		if (ch)
742 			break;
743 
744 		if (!timeo) {
745 			err = -EAGAIN;
746 			break;
747 		}
748 
749 		if (signal_pending(current)) {
750 			err = sock_intr_errno(timeo);
751 			break;
752 		}
753 
754 		release_sock(sk);
755 
756 		timeo = wait_woken(&wait, TASK_INTERRUPTIBLE, timeo);
757 		lock_sock(sk);
758 	}
759 	remove_wait_queue(sk_sleep(sk), &wait);
760 
761 	if (err)
762 		goto done;
763 
764 	newsock->state = SS_CONNECTED;
765 
766 	BT_DBG("new socket %p", ch);
767 
768 done:
769 	release_sock(sk);
770 	return err;
771 }
772 
773 static int sco_sock_getname(struct socket *sock, struct sockaddr *addr,
774 			    int peer)
775 {
776 	struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
777 	struct sock *sk = sock->sk;
778 
779 	BT_DBG("sock %p, sk %p", sock, sk);
780 
781 	addr->sa_family = AF_BLUETOOTH;
782 
783 	if (peer)
784 		bacpy(&sa->sco_bdaddr, &sco_pi(sk)->dst);
785 	else
786 		bacpy(&sa->sco_bdaddr, &sco_pi(sk)->src);
787 
788 	return sizeof(struct sockaddr_sco);
789 }
790 
791 static int sco_sock_sendmsg(struct socket *sock, struct msghdr *msg,
792 			    size_t len)
793 {
794 	struct sock *sk = sock->sk;
795 	struct sk_buff *skb;
796 	struct sockcm_cookie sockc;
797 	int err;
798 
799 	BT_DBG("sock %p, sk %p", sock, sk);
800 
801 	err = sock_error(sk);
802 	if (err)
803 		return err;
804 
805 	if (msg->msg_flags & MSG_OOB)
806 		return -EOPNOTSUPP;
807 
808 	hci_sockcm_init(&sockc, sk);
809 
810 	if (msg->msg_controllen) {
811 		err = sock_cmsg_send(sk, msg, &sockc);
812 		if (err)
813 			return err;
814 	}
815 
816 	skb = bt_skb_sendmsg(sk, msg, len, len, 0, 0);
817 	if (IS_ERR(skb))
818 		return PTR_ERR(skb);
819 
820 	lock_sock(sk);
821 
822 	if (sk->sk_state == BT_CONNECTED)
823 		err = sco_send_frame(sk, skb, &sockc);
824 	else
825 		err = -ENOTCONN;
826 
827 	release_sock(sk);
828 
829 	if (err < 0)
830 		kfree_skb(skb);
831 	return err;
832 }
833 
834 static void sco_conn_defer_accept(struct hci_conn *conn, u16 setting)
835 {
836 	struct hci_dev *hdev = conn->hdev;
837 
838 	BT_DBG("conn %p", conn);
839 
840 	conn->state = BT_CONFIG;
841 
842 	if (!lmp_esco_capable(hdev)) {
843 		struct hci_cp_accept_conn_req cp;
844 
845 		bacpy(&cp.bdaddr, &conn->dst);
846 		cp.role = 0x00; /* Ignored */
847 
848 		hci_send_cmd(hdev, HCI_OP_ACCEPT_CONN_REQ, sizeof(cp), &cp);
849 	} else {
850 		struct hci_cp_accept_sync_conn_req cp;
851 
852 		bacpy(&cp.bdaddr, &conn->dst);
853 		cp.pkt_type = cpu_to_le16(conn->pkt_type);
854 
855 		cp.tx_bandwidth   = cpu_to_le32(0x00001f40);
856 		cp.rx_bandwidth   = cpu_to_le32(0x00001f40);
857 		cp.content_format = cpu_to_le16(setting);
858 
859 		switch (setting & SCO_AIRMODE_MASK) {
860 		case SCO_AIRMODE_TRANSP:
861 			if (conn->pkt_type & ESCO_2EV3)
862 				cp.max_latency = cpu_to_le16(0x0008);
863 			else
864 				cp.max_latency = cpu_to_le16(0x000D);
865 			cp.retrans_effort = 0x02;
866 			break;
867 		case SCO_AIRMODE_CVSD:
868 			cp.max_latency = cpu_to_le16(0xffff);
869 			cp.retrans_effort = 0xff;
870 			break;
871 		default:
872 			/* use CVSD settings as fallback */
873 			cp.max_latency = cpu_to_le16(0xffff);
874 			cp.retrans_effort = 0xff;
875 			break;
876 		}
877 
878 		hci_send_cmd(hdev, HCI_OP_ACCEPT_SYNC_CONN_REQ,
879 			     sizeof(cp), &cp);
880 	}
881 }
882 
883 static int sco_sock_recvmsg(struct socket *sock, struct msghdr *msg,
884 			    size_t len, int flags)
885 {
886 	struct sock *sk = sock->sk;
887 	struct sco_pinfo *pi = sco_pi(sk);
888 
889 	if (unlikely(flags & MSG_ERRQUEUE))
890 		return sock_recv_errqueue(sk, msg, len, SOL_BLUETOOTH,
891 					  BT_SCM_ERROR);
892 
893 	lock_sock(sk);
894 
895 	if (sk->sk_state == BT_CONNECT2 &&
896 	    test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
897 		sco_conn_defer_accept(pi->conn->hcon, pi->setting);
898 		sk->sk_state = BT_CONFIG;
899 
900 		release_sock(sk);
901 		return 0;
902 	}
903 
904 	release_sock(sk);
905 
906 	return bt_sock_recvmsg(sock, msg, len, flags);
907 }
908 
909 static int sco_sock_setsockopt(struct socket *sock, int level, int optname,
910 			       sockptr_t optval, unsigned int optlen)
911 {
912 	struct sock *sk = sock->sk;
913 	int err = 0;
914 	struct bt_voice voice;
915 	u32 opt;
916 	struct bt_codecs *codecs;
917 	struct hci_dev *hdev;
918 	__u8 buffer[255];
919 
920 	BT_DBG("sk %p", sk);
921 
922 	lock_sock(sk);
923 
924 	switch (optname) {
925 
926 	case BT_DEFER_SETUP:
927 		if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
928 			err = -EINVAL;
929 			break;
930 		}
931 
932 		err = copy_safe_from_sockptr(&opt, sizeof(opt), optval, optlen);
933 		if (err)
934 			break;
935 
936 		if (opt)
937 			set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
938 		else
939 			clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
940 		break;
941 
942 	case BT_VOICE:
943 		if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND &&
944 		    sk->sk_state != BT_CONNECT2) {
945 			err = -EINVAL;
946 			break;
947 		}
948 
949 		voice.setting = sco_pi(sk)->setting;
950 
951 		err = copy_safe_from_sockptr(&voice, sizeof(voice), optval,
952 					     optlen);
953 		if (err)
954 			break;
955 
956 		sco_pi(sk)->setting = voice.setting;
957 		hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src,
958 				     BDADDR_BREDR);
959 		if (!hdev) {
960 			err = -EBADFD;
961 			break;
962 		}
963 
964 		switch (sco_pi(sk)->setting & SCO_AIRMODE_MASK) {
965 		case SCO_AIRMODE_TRANSP:
966 			if (enhanced_sync_conn_capable(hdev))
967 				sco_pi(sk)->codec.id = BT_CODEC_TRANSPARENT;
968 			break;
969 		}
970 
971 		hci_dev_put(hdev);
972 		break;
973 
974 	case BT_PKT_STATUS:
975 		err = copy_safe_from_sockptr(&opt, sizeof(opt), optval, optlen);
976 		if (err)
977 			break;
978 
979 		if (opt)
980 			set_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags);
981 		else
982 			clear_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags);
983 		break;
984 
985 	case BT_CODEC:
986 		if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND &&
987 		    sk->sk_state != BT_CONNECT2) {
988 			err = -EINVAL;
989 			break;
990 		}
991 
992 		hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src,
993 				     BDADDR_BREDR);
994 		if (!hdev) {
995 			err = -EBADFD;
996 			break;
997 		}
998 
999 		if (!hci_dev_test_flag(hdev, HCI_OFFLOAD_CODECS_ENABLED)) {
1000 			hci_dev_put(hdev);
1001 			err = -EOPNOTSUPP;
1002 			break;
1003 		}
1004 
1005 		if (!hdev->get_data_path_id) {
1006 			hci_dev_put(hdev);
1007 			err = -EOPNOTSUPP;
1008 			break;
1009 		}
1010 
1011 		if (optlen < sizeof(struct bt_codecs) ||
1012 		    optlen > sizeof(buffer)) {
1013 			hci_dev_put(hdev);
1014 			err = -EINVAL;
1015 			break;
1016 		}
1017 
1018 		err = copy_struct_from_sockptr(buffer, sizeof(buffer), optval,
1019 					       optlen);
1020 		if (err) {
1021 			hci_dev_put(hdev);
1022 			break;
1023 		}
1024 
1025 		codecs = (void *)buffer;
1026 
1027 		if (codecs->num_codecs > 1) {
1028 			hci_dev_put(hdev);
1029 			err = -EINVAL;
1030 			break;
1031 		}
1032 
1033 		sco_pi(sk)->codec = codecs->codecs[0];
1034 		hci_dev_put(hdev);
1035 		break;
1036 
1037 	default:
1038 		err = -ENOPROTOOPT;
1039 		break;
1040 	}
1041 
1042 	release_sock(sk);
1043 	return err;
1044 }
1045 
1046 static int sco_sock_getsockopt_old(struct socket *sock, int optname,
1047 				   char __user *optval, int __user *optlen)
1048 {
1049 	struct sock *sk = sock->sk;
1050 	struct sco_options opts;
1051 	struct sco_conninfo cinfo;
1052 	int err = 0;
1053 	size_t len;
1054 
1055 	BT_DBG("sk %p", sk);
1056 
1057 	if (get_user(len, optlen))
1058 		return -EFAULT;
1059 
1060 	lock_sock(sk);
1061 
1062 	switch (optname) {
1063 	case SCO_OPTIONS:
1064 		if (sk->sk_state != BT_CONNECTED &&
1065 		    !(sk->sk_state == BT_CONNECT2 &&
1066 		      test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))) {
1067 			err = -ENOTCONN;
1068 			break;
1069 		}
1070 
1071 		opts.mtu = sco_pi(sk)->conn->mtu;
1072 
1073 		BT_DBG("mtu %u", opts.mtu);
1074 
1075 		len = min(len, sizeof(opts));
1076 		if (copy_to_user(optval, (char *)&opts, len))
1077 			err = -EFAULT;
1078 
1079 		break;
1080 
1081 	case SCO_CONNINFO:
1082 		if (sk->sk_state != BT_CONNECTED &&
1083 		    !(sk->sk_state == BT_CONNECT2 &&
1084 		      test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))) {
1085 			err = -ENOTCONN;
1086 			break;
1087 		}
1088 
1089 		memset(&cinfo, 0, sizeof(cinfo));
1090 		cinfo.hci_handle = sco_pi(sk)->conn->hcon->handle;
1091 		memcpy(cinfo.dev_class, sco_pi(sk)->conn->hcon->dev_class, 3);
1092 
1093 		len = min(len, sizeof(cinfo));
1094 		if (copy_to_user(optval, (char *)&cinfo, len))
1095 			err = -EFAULT;
1096 
1097 		break;
1098 
1099 	default:
1100 		err = -ENOPROTOOPT;
1101 		break;
1102 	}
1103 
1104 	release_sock(sk);
1105 	return err;
1106 }
1107 
1108 static int sco_sock_getsockopt(struct socket *sock, int level, int optname,
1109 			       char __user *optval, int __user *optlen)
1110 {
1111 	struct sock *sk = sock->sk;
1112 	int len, err = 0;
1113 	struct bt_voice voice;
1114 	u32 phys;
1115 	int buf_len;
1116 	struct codec_list *c;
1117 	u8 num_codecs, i, __user *ptr;
1118 	struct hci_dev *hdev;
1119 	struct hci_codec_caps *caps;
1120 	struct bt_codec codec;
1121 
1122 	BT_DBG("sk %p", sk);
1123 
1124 	if (level == SOL_SCO)
1125 		return sco_sock_getsockopt_old(sock, optname, optval, optlen);
1126 
1127 	if (get_user(len, optlen))
1128 		return -EFAULT;
1129 
1130 	lock_sock(sk);
1131 
1132 	switch (optname) {
1133 
1134 	case BT_DEFER_SETUP:
1135 		if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
1136 			err = -EINVAL;
1137 			break;
1138 		}
1139 
1140 		if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags),
1141 			     (u32 __user *)optval))
1142 			err = -EFAULT;
1143 
1144 		break;
1145 
1146 	case BT_VOICE:
1147 		voice.setting = sco_pi(sk)->setting;
1148 
1149 		len = min_t(unsigned int, len, sizeof(voice));
1150 		if (copy_to_user(optval, (char *)&voice, len))
1151 			err = -EFAULT;
1152 
1153 		break;
1154 
1155 	case BT_PHY:
1156 		if (sk->sk_state != BT_CONNECTED) {
1157 			err = -ENOTCONN;
1158 			break;
1159 		}
1160 
1161 		phys = hci_conn_get_phy(sco_pi(sk)->conn->hcon);
1162 
1163 		if (put_user(phys, (u32 __user *) optval))
1164 			err = -EFAULT;
1165 		break;
1166 
1167 	case BT_PKT_STATUS:
1168 		if (put_user(test_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags),
1169 			     (int __user *)optval))
1170 			err = -EFAULT;
1171 		break;
1172 
1173 	case BT_SNDMTU:
1174 	case BT_RCVMTU:
1175 		if (sk->sk_state != BT_CONNECTED) {
1176 			err = -ENOTCONN;
1177 			break;
1178 		}
1179 
1180 		if (put_user(sco_pi(sk)->conn->mtu, (u32 __user *)optval))
1181 			err = -EFAULT;
1182 		break;
1183 
1184 	case BT_CODEC:
1185 		num_codecs = 0;
1186 		buf_len = 0;
1187 
1188 		hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src, BDADDR_BREDR);
1189 		if (!hdev) {
1190 			err = -EBADFD;
1191 			break;
1192 		}
1193 
1194 		if (!hci_dev_test_flag(hdev, HCI_OFFLOAD_CODECS_ENABLED)) {
1195 			hci_dev_put(hdev);
1196 			err = -EOPNOTSUPP;
1197 			break;
1198 		}
1199 
1200 		if (!hdev->get_data_path_id) {
1201 			hci_dev_put(hdev);
1202 			err = -EOPNOTSUPP;
1203 			break;
1204 		}
1205 
1206 		release_sock(sk);
1207 
1208 		/* find total buffer size required to copy codec + caps */
1209 		hci_dev_lock(hdev);
1210 		list_for_each_entry(c, &hdev->local_codecs, list) {
1211 			if (c->transport != HCI_TRANSPORT_SCO_ESCO)
1212 				continue;
1213 			num_codecs++;
1214 			for (i = 0, caps = c->caps; i < c->num_caps; i++) {
1215 				buf_len += 1 + caps->len;
1216 				caps = (void *)&caps->data[caps->len];
1217 			}
1218 			buf_len += sizeof(struct bt_codec);
1219 		}
1220 		hci_dev_unlock(hdev);
1221 
1222 		buf_len += sizeof(struct bt_codecs);
1223 		if (buf_len > len) {
1224 			hci_dev_put(hdev);
1225 			return -ENOBUFS;
1226 		}
1227 		ptr = optval;
1228 
1229 		if (put_user(num_codecs, ptr)) {
1230 			hci_dev_put(hdev);
1231 			return -EFAULT;
1232 		}
1233 		ptr += sizeof(num_codecs);
1234 
1235 		/* Iterate all the codecs supported over SCO and populate
1236 		 * codec data
1237 		 */
1238 		hci_dev_lock(hdev);
1239 		list_for_each_entry(c, &hdev->local_codecs, list) {
1240 			if (c->transport != HCI_TRANSPORT_SCO_ESCO)
1241 				continue;
1242 
1243 			codec.id = c->id;
1244 			codec.cid = c->cid;
1245 			codec.vid = c->vid;
1246 			err = hdev->get_data_path_id(hdev, &codec.data_path);
1247 			if (err < 0)
1248 				break;
1249 			codec.num_caps = c->num_caps;
1250 			if (copy_to_user(ptr, &codec, sizeof(codec))) {
1251 				err = -EFAULT;
1252 				break;
1253 			}
1254 			ptr += sizeof(codec);
1255 
1256 			/* find codec capabilities data length */
1257 			len = 0;
1258 			for (i = 0, caps = c->caps; i < c->num_caps; i++) {
1259 				len += 1 + caps->len;
1260 				caps = (void *)&caps->data[caps->len];
1261 			}
1262 
1263 			/* copy codec capabilities data */
1264 			if (len && copy_to_user(ptr, c->caps, len)) {
1265 				err = -EFAULT;
1266 				break;
1267 			}
1268 			ptr += len;
1269 		}
1270 
1271 		hci_dev_unlock(hdev);
1272 		hci_dev_put(hdev);
1273 
1274 		lock_sock(sk);
1275 
1276 		if (!err && put_user(buf_len, optlen))
1277 			err = -EFAULT;
1278 
1279 		break;
1280 
1281 	default:
1282 		err = -ENOPROTOOPT;
1283 		break;
1284 	}
1285 
1286 	release_sock(sk);
1287 	return err;
1288 }
1289 
1290 static int sco_sock_shutdown(struct socket *sock, int how)
1291 {
1292 	struct sock *sk = sock->sk;
1293 	int err = 0;
1294 
1295 	BT_DBG("sock %p, sk %p", sock, sk);
1296 
1297 	if (!sk)
1298 		return 0;
1299 
1300 	sock_hold(sk);
1301 	lock_sock(sk);
1302 
1303 	if (!sk->sk_shutdown) {
1304 		sk->sk_shutdown = SHUTDOWN_MASK;
1305 		sco_sock_clear_timer(sk);
1306 		__sco_sock_close(sk);
1307 
1308 		if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
1309 		    !(current->flags & PF_EXITING))
1310 			err = bt_sock_wait_state(sk, BT_CLOSED,
1311 						 sk->sk_lingertime);
1312 	}
1313 
1314 	release_sock(sk);
1315 	sock_put(sk);
1316 
1317 	return err;
1318 }
1319 
1320 static int sco_sock_release(struct socket *sock)
1321 {
1322 	struct sock *sk = sock->sk;
1323 	int err = 0;
1324 
1325 	BT_DBG("sock %p, sk %p", sock, sk);
1326 
1327 	if (!sk)
1328 		return 0;
1329 
1330 	sco_sock_close(sk);
1331 
1332 	if (sock_flag(sk, SOCK_LINGER) && READ_ONCE(sk->sk_lingertime) &&
1333 	    !(current->flags & PF_EXITING)) {
1334 		lock_sock(sk);
1335 		err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
1336 		release_sock(sk);
1337 	}
1338 
1339 	sock_orphan(sk);
1340 	sco_sock_kill(sk);
1341 	return err;
1342 }
1343 
1344 static void sco_conn_ready(struct sco_conn *conn)
1345 {
1346 	struct sock *parent;
1347 	struct sock *sk = conn->sk;
1348 
1349 	BT_DBG("conn %p", conn);
1350 
1351 	if (sk) {
1352 		lock_sock(sk);
1353 		sco_sock_clear_timer(sk);
1354 		sk->sk_state = BT_CONNECTED;
1355 		sk->sk_state_change(sk);
1356 		release_sock(sk);
1357 	} else {
1358 		sco_conn_lock(conn);
1359 
1360 		if (!conn->hcon) {
1361 			sco_conn_unlock(conn);
1362 			return;
1363 		}
1364 
1365 		parent = sco_get_sock_listen(&conn->hcon->src);
1366 		if (!parent) {
1367 			sco_conn_unlock(conn);
1368 			return;
1369 		}
1370 
1371 		lock_sock(parent);
1372 
1373 		sk = sco_sock_alloc(sock_net(parent), NULL,
1374 				    BTPROTO_SCO, GFP_ATOMIC, 0);
1375 		if (!sk) {
1376 			release_sock(parent);
1377 			sco_conn_unlock(conn);
1378 			return;
1379 		}
1380 
1381 		sco_sock_init(sk, parent);
1382 
1383 		bacpy(&sco_pi(sk)->src, &conn->hcon->src);
1384 		bacpy(&sco_pi(sk)->dst, &conn->hcon->dst);
1385 
1386 		sco_conn_hold(conn);
1387 		hci_conn_hold(conn->hcon);
1388 		__sco_chan_add(conn, sk, parent);
1389 
1390 		if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(parent)->flags))
1391 			sk->sk_state = BT_CONNECT2;
1392 		else
1393 			sk->sk_state = BT_CONNECTED;
1394 
1395 		/* Wake up parent */
1396 		parent->sk_data_ready(parent);
1397 
1398 		release_sock(parent);
1399 
1400 		sco_conn_unlock(conn);
1401 	}
1402 }
1403 
1404 /* ----- SCO interface with lower layer (HCI) ----- */
1405 int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 *flags)
1406 {
1407 	struct sock *sk;
1408 	int lm = 0;
1409 
1410 	BT_DBG("hdev %s, bdaddr %pMR", hdev->name, bdaddr);
1411 
1412 	/* Find listening sockets */
1413 	read_lock(&sco_sk_list.lock);
1414 	sk_for_each(sk, &sco_sk_list.head) {
1415 		if (sk->sk_state != BT_LISTEN)
1416 			continue;
1417 
1418 		if (!bacmp(&sco_pi(sk)->src, &hdev->bdaddr) ||
1419 		    !bacmp(&sco_pi(sk)->src, BDADDR_ANY)) {
1420 			lm |= HCI_LM_ACCEPT;
1421 
1422 			if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))
1423 				*flags |= HCI_PROTO_DEFER;
1424 			break;
1425 		}
1426 	}
1427 	read_unlock(&sco_sk_list.lock);
1428 
1429 	return lm;
1430 }
1431 
1432 static void sco_connect_cfm(struct hci_conn *hcon, __u8 status)
1433 {
1434 	if (hcon->type != SCO_LINK && hcon->type != ESCO_LINK)
1435 		return;
1436 
1437 	BT_DBG("hcon %p bdaddr %pMR status %u", hcon, &hcon->dst, status);
1438 
1439 	if (!status) {
1440 		struct sco_conn *conn;
1441 
1442 		conn = sco_conn_add(hcon);
1443 		if (conn) {
1444 			sco_conn_ready(conn);
1445 			sco_conn_put(conn);
1446 		}
1447 	} else
1448 		sco_conn_del(hcon, bt_to_errno(status));
1449 }
1450 
1451 static void sco_disconn_cfm(struct hci_conn *hcon, __u8 reason)
1452 {
1453 	if (hcon->type != SCO_LINK && hcon->type != ESCO_LINK)
1454 		return;
1455 
1456 	BT_DBG("hcon %p reason %d", hcon, reason);
1457 
1458 	sco_conn_del(hcon, bt_to_errno(reason));
1459 }
1460 
1461 void sco_recv_scodata(struct hci_conn *hcon, struct sk_buff *skb)
1462 {
1463 	struct sco_conn *conn = hcon->sco_data;
1464 
1465 	if (!conn)
1466 		goto drop;
1467 
1468 	BT_DBG("conn %p len %u", conn, skb->len);
1469 
1470 	if (skb->len) {
1471 		sco_recv_frame(conn, skb);
1472 		return;
1473 	}
1474 
1475 drop:
1476 	kfree_skb(skb);
1477 }
1478 
1479 static struct hci_cb sco_cb = {
1480 	.name		= "SCO",
1481 	.connect_cfm	= sco_connect_cfm,
1482 	.disconn_cfm	= sco_disconn_cfm,
1483 };
1484 
1485 static int sco_debugfs_show(struct seq_file *f, void *p)
1486 {
1487 	struct sock *sk;
1488 
1489 	read_lock(&sco_sk_list.lock);
1490 
1491 	sk_for_each(sk, &sco_sk_list.head) {
1492 		seq_printf(f, "%pMR %pMR %d\n", &sco_pi(sk)->src,
1493 			   &sco_pi(sk)->dst, sk->sk_state);
1494 	}
1495 
1496 	read_unlock(&sco_sk_list.lock);
1497 
1498 	return 0;
1499 }
1500 
1501 DEFINE_SHOW_ATTRIBUTE(sco_debugfs);
1502 
1503 static struct dentry *sco_debugfs;
1504 
1505 static const struct proto_ops sco_sock_ops = {
1506 	.family		= PF_BLUETOOTH,
1507 	.owner		= THIS_MODULE,
1508 	.release	= sco_sock_release,
1509 	.bind		= sco_sock_bind,
1510 	.connect	= sco_sock_connect,
1511 	.listen		= sco_sock_listen,
1512 	.accept		= sco_sock_accept,
1513 	.getname	= sco_sock_getname,
1514 	.sendmsg	= sco_sock_sendmsg,
1515 	.recvmsg	= sco_sock_recvmsg,
1516 	.poll		= bt_sock_poll,
1517 	.ioctl		= bt_sock_ioctl,
1518 	.gettstamp	= sock_gettstamp,
1519 	.mmap		= sock_no_mmap,
1520 	.socketpair	= sock_no_socketpair,
1521 	.shutdown	= sco_sock_shutdown,
1522 	.setsockopt	= sco_sock_setsockopt,
1523 	.getsockopt	= sco_sock_getsockopt
1524 };
1525 
1526 static const struct net_proto_family sco_sock_family_ops = {
1527 	.family	= PF_BLUETOOTH,
1528 	.owner	= THIS_MODULE,
1529 	.create	= sco_sock_create,
1530 };
1531 
1532 int __init sco_init(void)
1533 {
1534 	int err;
1535 
1536 	BUILD_BUG_ON(sizeof(struct sockaddr_sco) > sizeof(struct sockaddr));
1537 
1538 	err = proto_register(&sco_proto, 0);
1539 	if (err < 0)
1540 		return err;
1541 
1542 	err = bt_sock_register(BTPROTO_SCO, &sco_sock_family_ops);
1543 	if (err < 0) {
1544 		BT_ERR("SCO socket registration failed");
1545 		goto error;
1546 	}
1547 
1548 	err = bt_procfs_init(&init_net, "sco", &sco_sk_list, NULL);
1549 	if (err < 0) {
1550 		BT_ERR("Failed to create SCO proc file");
1551 		bt_sock_unregister(BTPROTO_SCO);
1552 		goto error;
1553 	}
1554 
1555 	BT_INFO("SCO socket layer initialized");
1556 
1557 	hci_register_cb(&sco_cb);
1558 
1559 	if (IS_ERR_OR_NULL(bt_debugfs))
1560 		return 0;
1561 
1562 	sco_debugfs = debugfs_create_file("sco", 0444, bt_debugfs,
1563 					  NULL, &sco_debugfs_fops);
1564 
1565 	return 0;
1566 
1567 error:
1568 	proto_unregister(&sco_proto);
1569 	return err;
1570 }
1571 
1572 void sco_exit(void)
1573 {
1574 	bt_procfs_cleanup(&init_net, "sco");
1575 
1576 	debugfs_remove(sco_debugfs);
1577 
1578 	hci_unregister_cb(&sco_cb);
1579 
1580 	bt_sock_unregister(BTPROTO_SCO);
1581 
1582 	proto_unregister(&sco_proto);
1583 }
1584 
1585 module_param(disable_esco, bool, 0644);
1586 MODULE_PARM_DESC(disable_esco, "Disable eSCO connection creation");
1587