Lines Matching refs:sk

43 static void rfcomm_sock_close(struct sock *sk);
44 static void rfcomm_sock_kill(struct sock *sk);
52 struct sock *sk = d->owner; in rfcomm_sk_data_ready() local
53 if (!sk) in rfcomm_sk_data_ready()
56 atomic_add(skb->len, &sk->sk_rmem_alloc); in rfcomm_sk_data_ready()
57 skb_queue_tail(&sk->sk_receive_queue, skb); in rfcomm_sk_data_ready()
58 sk->sk_data_ready(sk); in rfcomm_sk_data_ready()
60 if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf) in rfcomm_sk_data_ready()
66 struct sock *sk = d->owner, *parent; in rfcomm_sk_state_change() local
69 if (!sk) in rfcomm_sk_state_change()
75 bh_lock_sock(sk); in rfcomm_sk_state_change()
78 sk->sk_err = err; in rfcomm_sk_state_change()
80 sk->sk_state = d->state; in rfcomm_sk_state_change()
82 parent = bt_sk(sk)->parent; in rfcomm_sk_state_change()
85 sock_set_flag(sk, SOCK_ZAPPED); in rfcomm_sk_state_change()
86 bt_accept_unlink(sk); in rfcomm_sk_state_change()
92 &rfcomm_pi(sk)->src, NULL); in rfcomm_sk_state_change()
93 sk->sk_state_change(sk); in rfcomm_sk_state_change()
96 bh_unlock_sock(sk); in rfcomm_sk_state_change()
99 if (parent && sock_flag(sk, SOCK_ZAPPED)) { in rfcomm_sk_state_change()
103 rfcomm_sock_kill(sk); in rfcomm_sk_state_change()
111 struct sock *sk = NULL; in __rfcomm_get_listen_sock_by_addr() local
113 sk_for_each(sk, &rfcomm_sk_list.head) { in __rfcomm_get_listen_sock_by_addr()
114 if (rfcomm_pi(sk)->channel != channel) in __rfcomm_get_listen_sock_by_addr()
117 if (bacmp(&rfcomm_pi(sk)->src, src)) in __rfcomm_get_listen_sock_by_addr()
120 if (sk->sk_state == BT_BOUND || sk->sk_state == BT_LISTEN) in __rfcomm_get_listen_sock_by_addr()
124 return sk ? sk : NULL; in __rfcomm_get_listen_sock_by_addr()
132 struct sock *sk = NULL, *sk1 = NULL; in rfcomm_get_sock_by_channel() local
136 sk_for_each(sk, &rfcomm_sk_list.head) { in rfcomm_get_sock_by_channel()
137 if (state && sk->sk_state != state) in rfcomm_get_sock_by_channel()
140 if (rfcomm_pi(sk)->channel == channel) { in rfcomm_get_sock_by_channel()
142 if (!bacmp(&rfcomm_pi(sk)->src, src)) in rfcomm_get_sock_by_channel()
146 if (!bacmp(&rfcomm_pi(sk)->src, BDADDR_ANY)) in rfcomm_get_sock_by_channel()
147 sk1 = sk; in rfcomm_get_sock_by_channel()
153 return sk ? sk : sk1; in rfcomm_get_sock_by_channel()
156 static void rfcomm_sock_destruct(struct sock *sk) in rfcomm_sock_destruct() argument
158 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_destruct()
160 BT_DBG("sk %p dlc %p", sk, d); in rfcomm_sock_destruct()
162 skb_queue_purge(&sk->sk_receive_queue); in rfcomm_sock_destruct()
163 skb_queue_purge(&sk->sk_write_queue); in rfcomm_sock_destruct()
166 rfcomm_pi(sk)->dlc = NULL; in rfcomm_sock_destruct()
169 if (d->owner == sk) in rfcomm_sock_destruct()
178 struct sock *sk; in rfcomm_sock_cleanup_listen() local
183 while ((sk = bt_accept_dequeue(parent, NULL))) { in rfcomm_sock_cleanup_listen()
184 rfcomm_sock_close(sk); in rfcomm_sock_cleanup_listen()
185 rfcomm_sock_kill(sk); in rfcomm_sock_cleanup_listen()
195 static void rfcomm_sock_kill(struct sock *sk) in rfcomm_sock_kill() argument
197 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket) in rfcomm_sock_kill()
200 BT_DBG("sk %p state %d refcnt %d", sk, sk->sk_state, refcount_read(&sk->sk_refcnt)); in rfcomm_sock_kill()
203 bt_sock_unlink(&rfcomm_sk_list, sk); in rfcomm_sock_kill()
204 sock_set_flag(sk, SOCK_DEAD); in rfcomm_sock_kill()
205 sock_put(sk); in rfcomm_sock_kill()
208 static void __rfcomm_sock_close(struct sock *sk) in __rfcomm_sock_close() argument
210 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in __rfcomm_sock_close()
212 BT_DBG("sk %p state %d socket %p", sk, sk->sk_state, sk->sk_socket); in __rfcomm_sock_close()
214 switch (sk->sk_state) { in __rfcomm_sock_close()
216 rfcomm_sock_cleanup_listen(sk); in __rfcomm_sock_close()
227 sock_set_flag(sk, SOCK_ZAPPED); in __rfcomm_sock_close()
235 static void rfcomm_sock_close(struct sock *sk) in rfcomm_sock_close() argument
237 lock_sock(sk); in rfcomm_sock_close()
238 __rfcomm_sock_close(sk); in rfcomm_sock_close()
239 release_sock(sk); in rfcomm_sock_close()
242 static void rfcomm_sock_init(struct sock *sk, struct sock *parent) in rfcomm_sock_init() argument
244 struct rfcomm_pinfo *pi = rfcomm_pi(sk); in rfcomm_sock_init()
246 BT_DBG("sk %p", sk); in rfcomm_sock_init()
249 sk->sk_type = parent->sk_type; in rfcomm_sock_init()
256 security_sk_clone(parent, sk); in rfcomm_sock_init()
277 struct sock *sk; in rfcomm_sock_alloc() local
279 sk = sk_alloc(net, PF_BLUETOOTH, prio, &rfcomm_proto, kern); in rfcomm_sock_alloc()
280 if (!sk) in rfcomm_sock_alloc()
283 sock_init_data(sock, sk); in rfcomm_sock_alloc()
284 INIT_LIST_HEAD(&bt_sk(sk)->accept_q); in rfcomm_sock_alloc()
288 sk_free(sk); in rfcomm_sock_alloc()
295 rfcomm_pi(sk)->dlc = d; in rfcomm_sock_alloc()
296 d->owner = sk; in rfcomm_sock_alloc()
298 sk->sk_destruct = rfcomm_sock_destruct; in rfcomm_sock_alloc()
299 sk->sk_sndtimeo = RFCOMM_CONN_TIMEOUT; in rfcomm_sock_alloc()
301 sk->sk_sndbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10; in rfcomm_sock_alloc()
302 sk->sk_rcvbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10; in rfcomm_sock_alloc()
304 sock_reset_flag(sk, SOCK_ZAPPED); in rfcomm_sock_alloc()
306 sk->sk_protocol = proto; in rfcomm_sock_alloc()
307 sk->sk_state = BT_OPEN; in rfcomm_sock_alloc()
309 bt_sock_link(&rfcomm_sk_list, sk); in rfcomm_sock_alloc()
311 BT_DBG("sk %p", sk); in rfcomm_sock_alloc()
312 return sk; in rfcomm_sock_alloc()
318 struct sock *sk; in rfcomm_sock_create() local
329 sk = rfcomm_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern); in rfcomm_sock_create()
330 if (!sk) in rfcomm_sock_create()
333 rfcomm_sock_init(sk, NULL); in rfcomm_sock_create()
340 struct sock *sk = sock->sk; in rfcomm_sock_bind() local
351 BT_DBG("sk %p %pMR", sk, &sa.rc_bdaddr); in rfcomm_sock_bind()
353 lock_sock(sk); in rfcomm_sock_bind()
355 if (sk->sk_state != BT_OPEN) { in rfcomm_sock_bind()
360 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_bind()
372 bacpy(&rfcomm_pi(sk)->src, &sa.rc_bdaddr); in rfcomm_sock_bind()
373 rfcomm_pi(sk)->channel = sa.rc_channel; in rfcomm_sock_bind()
374 sk->sk_state = BT_BOUND; in rfcomm_sock_bind()
380 release_sock(sk); in rfcomm_sock_bind()
387 struct sock *sk = sock->sk; in rfcomm_sock_connect() local
388 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_connect()
391 BT_DBG("sk %p", sk); in rfcomm_sock_connect()
397 lock_sock(sk); in rfcomm_sock_connect()
399 if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND) { in rfcomm_sock_connect()
404 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_connect()
409 sk->sk_state = BT_CONNECT; in rfcomm_sock_connect()
410 bacpy(&rfcomm_pi(sk)->dst, &sa->rc_bdaddr); in rfcomm_sock_connect()
411 rfcomm_pi(sk)->channel = sa->rc_channel; in rfcomm_sock_connect()
413 d->sec_level = rfcomm_pi(sk)->sec_level; in rfcomm_sock_connect()
414 d->role_switch = rfcomm_pi(sk)->role_switch; in rfcomm_sock_connect()
416 err = rfcomm_dlc_open(d, &rfcomm_pi(sk)->src, &sa->rc_bdaddr, in rfcomm_sock_connect()
419 err = bt_sock_wait_state(sk, BT_CONNECTED, in rfcomm_sock_connect()
420 sock_sndtimeo(sk, flags & O_NONBLOCK)); in rfcomm_sock_connect()
423 release_sock(sk); in rfcomm_sock_connect()
429 struct sock *sk = sock->sk; in rfcomm_sock_listen() local
432 BT_DBG("sk %p backlog %d", sk, backlog); in rfcomm_sock_listen()
434 lock_sock(sk); in rfcomm_sock_listen()
436 if (sk->sk_state != BT_BOUND) { in rfcomm_sock_listen()
441 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_listen()
446 if (!rfcomm_pi(sk)->channel) { in rfcomm_sock_listen()
447 bdaddr_t *src = &rfcomm_pi(sk)->src; in rfcomm_sock_listen()
456 rfcomm_pi(sk)->channel = channel; in rfcomm_sock_listen()
467 sk->sk_max_ack_backlog = backlog; in rfcomm_sock_listen()
468 sk->sk_ack_backlog = 0; in rfcomm_sock_listen()
469 sk->sk_state = BT_LISTEN; in rfcomm_sock_listen()
472 release_sock(sk); in rfcomm_sock_listen()
480 struct sock *sk = sock->sk, *nsk; in rfcomm_sock_accept() local
484 lock_sock_nested(sk, SINGLE_DEPTH_NESTING); in rfcomm_sock_accept()
486 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_accept()
491 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK); in rfcomm_sock_accept()
493 BT_DBG("sk %p timeo %ld", sk, timeo); in rfcomm_sock_accept()
496 add_wait_queue_exclusive(sk_sleep(sk), &wait); in rfcomm_sock_accept()
498 if (sk->sk_state != BT_LISTEN) { in rfcomm_sock_accept()
503 nsk = bt_accept_dequeue(sk, newsock); in rfcomm_sock_accept()
517 release_sock(sk); in rfcomm_sock_accept()
521 lock_sock_nested(sk, SINGLE_DEPTH_NESTING); in rfcomm_sock_accept()
523 remove_wait_queue(sk_sleep(sk), &wait); in rfcomm_sock_accept()
533 release_sock(sk); in rfcomm_sock_accept()
540 struct sock *sk = sock->sk; in rfcomm_sock_getname() local
542 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_getname()
544 if (peer && sk->sk_state != BT_CONNECTED && in rfcomm_sock_getname()
545 sk->sk_state != BT_CONNECT && sk->sk_state != BT_CONNECT2) in rfcomm_sock_getname()
550 sa->rc_channel = rfcomm_pi(sk)->channel; in rfcomm_sock_getname()
552 bacpy(&sa->rc_bdaddr, &rfcomm_pi(sk)->dst); in rfcomm_sock_getname()
554 bacpy(&sa->rc_bdaddr, &rfcomm_pi(sk)->src); in rfcomm_sock_getname()
562 struct sock *sk = sock->sk; in rfcomm_sock_sendmsg() local
563 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_sendmsg()
573 if (sk->sk_shutdown & SEND_SHUTDOWN) in rfcomm_sock_sendmsg()
576 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_sendmsg()
578 lock_sock(sk); in rfcomm_sock_sendmsg()
580 sent = bt_sock_wait_ready(sk, msg->msg_flags); in rfcomm_sock_sendmsg()
588 skb = sock_alloc_send_skb(sk, size + RFCOMM_SKB_RESERVE, in rfcomm_sock_sendmsg()
605 skb->priority = sk->sk_priority; in rfcomm_sock_sendmsg()
620 release_sock(sk); in rfcomm_sock_sendmsg()
628 struct sock *sk = sock->sk; in rfcomm_sock_recvmsg() local
629 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_recvmsg()
639 lock_sock(sk); in rfcomm_sock_recvmsg()
641 atomic_sub(len, &sk->sk_rmem_alloc); in rfcomm_sock_recvmsg()
643 if (atomic_read(&sk->sk_rmem_alloc) <= (sk->sk_rcvbuf >> 2)) in rfcomm_sock_recvmsg()
644 rfcomm_dlc_unthrottle(rfcomm_pi(sk)->dlc); in rfcomm_sock_recvmsg()
645 release_sock(sk); in rfcomm_sock_recvmsg()
652 struct sock *sk = sock->sk; in rfcomm_sock_setsockopt_old() local
656 BT_DBG("sk %p", sk); in rfcomm_sock_setsockopt_old()
658 lock_sock(sk); in rfcomm_sock_setsockopt_old()
673 rfcomm_pi(sk)->sec_level = BT_SECURITY_LOW; in rfcomm_sock_setsockopt_old()
675 rfcomm_pi(sk)->sec_level = BT_SECURITY_MEDIUM; in rfcomm_sock_setsockopt_old()
677 rfcomm_pi(sk)->sec_level = BT_SECURITY_HIGH; in rfcomm_sock_setsockopt_old()
679 rfcomm_pi(sk)->role_switch = (opt & RFCOMM_LM_MASTER); in rfcomm_sock_setsockopt_old()
687 release_sock(sk); in rfcomm_sock_setsockopt_old()
693 struct sock *sk = sock->sk; in rfcomm_sock_setsockopt() local
699 BT_DBG("sk %p", sk); in rfcomm_sock_setsockopt()
707 lock_sock(sk); in rfcomm_sock_setsockopt()
711 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_setsockopt()
729 rfcomm_pi(sk)->sec_level = sec.level; in rfcomm_sock_setsockopt()
733 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) { in rfcomm_sock_setsockopt()
744 set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags); in rfcomm_sock_setsockopt()
746 clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags); in rfcomm_sock_setsockopt()
755 release_sock(sk); in rfcomm_sock_setsockopt()
761 struct sock *sk = sock->sk; in rfcomm_sock_getsockopt_old() local
768 BT_DBG("sk %p", sk); in rfcomm_sock_getsockopt_old()
773 lock_sock(sk); in rfcomm_sock_getsockopt_old()
777 switch (rfcomm_pi(sk)->sec_level) { in rfcomm_sock_getsockopt_old()
797 if (rfcomm_pi(sk)->role_switch) in rfcomm_sock_getsockopt_old()
806 if (sk->sk_state != BT_CONNECTED && in rfcomm_sock_getsockopt_old()
807 !rfcomm_pi(sk)->dlc->defer_setup) { in rfcomm_sock_getsockopt_old()
812 l2cap_sk = rfcomm_pi(sk)->dlc->session->sock->sk; in rfcomm_sock_getsockopt_old()
830 release_sock(sk); in rfcomm_sock_getsockopt_old()
836 struct sock *sk = sock->sk; in rfcomm_sock_getsockopt() local
840 BT_DBG("sk %p", sk); in rfcomm_sock_getsockopt()
851 lock_sock(sk); in rfcomm_sock_getsockopt()
855 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_getsockopt()
860 sec.level = rfcomm_pi(sk)->sec_level; in rfcomm_sock_getsockopt()
870 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) { in rfcomm_sock_getsockopt()
875 if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags), in rfcomm_sock_getsockopt()
886 release_sock(sk); in rfcomm_sock_getsockopt()
892 struct sock *sk __maybe_unused = sock->sk; in rfcomm_sock_ioctl()
895 BT_DBG("sk %p cmd %x arg %lx", sk, cmd, arg); in rfcomm_sock_ioctl()
901 lock_sock(sk); in rfcomm_sock_ioctl()
902 err = rfcomm_dev_ioctl(sk, cmd, (void __user *) arg); in rfcomm_sock_ioctl()
903 release_sock(sk); in rfcomm_sock_ioctl()
914 struct sock *sk = sock->sk; in rfcomm_sock_shutdown() local
917 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_shutdown()
919 if (!sk) in rfcomm_sock_shutdown()
922 lock_sock(sk); in rfcomm_sock_shutdown()
923 if (!sk->sk_shutdown) { in rfcomm_sock_shutdown()
924 sk->sk_shutdown = SHUTDOWN_MASK; in rfcomm_sock_shutdown()
925 __rfcomm_sock_close(sk); in rfcomm_sock_shutdown()
927 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime && in rfcomm_sock_shutdown()
929 err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime); in rfcomm_sock_shutdown()
931 release_sock(sk); in rfcomm_sock_shutdown()
937 struct sock *sk = sock->sk; in rfcomm_sock_release() local
940 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_release()
942 if (!sk) in rfcomm_sock_release()
947 sock_orphan(sk); in rfcomm_sock_release()
948 rfcomm_sock_kill(sk); in rfcomm_sock_release()
958 struct sock *sk, *parent; in rfcomm_connect_ind() local
979 sk = rfcomm_sock_alloc(sock_net(parent), NULL, BTPROTO_RFCOMM, GFP_ATOMIC, 0); in rfcomm_connect_ind()
980 if (!sk) in rfcomm_connect_ind()
983 bt_sock_reclassify_lock(sk, BTPROTO_RFCOMM); in rfcomm_connect_ind()
985 rfcomm_sock_init(sk, parent); in rfcomm_connect_ind()
986 bacpy(&rfcomm_pi(sk)->src, &src); in rfcomm_connect_ind()
987 bacpy(&rfcomm_pi(sk)->dst, &dst); in rfcomm_connect_ind()
988 rfcomm_pi(sk)->channel = channel; in rfcomm_connect_ind()
990 sk->sk_state = BT_CONFIG; in rfcomm_connect_ind()
991 bt_accept_enqueue(parent, sk, true); in rfcomm_connect_ind()
994 *d = rfcomm_pi(sk)->dlc; in rfcomm_connect_ind()
1008 struct sock *sk; in rfcomm_sock_debugfs_show() local
1012 sk_for_each(sk, &rfcomm_sk_list.head) { in rfcomm_sock_debugfs_show()
1014 &rfcomm_pi(sk)->src, &rfcomm_pi(sk)->dst, in rfcomm_sock_debugfs_show()
1015 sk->sk_state, rfcomm_pi(sk)->channel); in rfcomm_sock_debugfs_show()