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
68 if (!sk) in rfcomm_sk_state_change()
73 spin_lock_bh(&sk->sk_lock.slock); in rfcomm_sk_state_change()
76 sk->sk_err = err; in rfcomm_sk_state_change()
78 sk->sk_state = d->state; in rfcomm_sk_state_change()
80 parent = bt_sk(sk)->parent; in rfcomm_sk_state_change()
83 sock_set_flag(sk, SOCK_ZAPPED); in rfcomm_sk_state_change()
84 bt_accept_unlink(sk); in rfcomm_sk_state_change()
90 &rfcomm_pi(sk)->src, NULL); in rfcomm_sk_state_change()
91 sk->sk_state_change(sk); in rfcomm_sk_state_change()
94 spin_unlock_bh(&sk->sk_lock.slock); in rfcomm_sk_state_change()
96 if (parent && sock_flag(sk, SOCK_ZAPPED)) { in rfcomm_sk_state_change()
100 rfcomm_sock_kill(sk); in rfcomm_sk_state_change()
108 struct sock *sk = NULL; in __rfcomm_get_listen_sock_by_addr() local
110 sk_for_each(sk, &rfcomm_sk_list.head) { in __rfcomm_get_listen_sock_by_addr()
111 if (rfcomm_pi(sk)->channel != channel) in __rfcomm_get_listen_sock_by_addr()
114 if (bacmp(&rfcomm_pi(sk)->src, src)) in __rfcomm_get_listen_sock_by_addr()
117 if (sk->sk_state == BT_BOUND || sk->sk_state == BT_LISTEN) in __rfcomm_get_listen_sock_by_addr()
121 return sk ? sk : NULL; in __rfcomm_get_listen_sock_by_addr()
129 struct sock *sk = NULL, *sk1 = NULL; in rfcomm_get_sock_by_channel() local
133 sk_for_each(sk, &rfcomm_sk_list.head) { in rfcomm_get_sock_by_channel()
134 if (state && sk->sk_state != state) in rfcomm_get_sock_by_channel()
137 if (rfcomm_pi(sk)->channel == channel) { in rfcomm_get_sock_by_channel()
139 if (!bacmp(&rfcomm_pi(sk)->src, src)) in rfcomm_get_sock_by_channel()
143 if (!bacmp(&rfcomm_pi(sk)->src, BDADDR_ANY)) in rfcomm_get_sock_by_channel()
144 sk1 = sk; in rfcomm_get_sock_by_channel()
150 return sk ? sk : sk1; in rfcomm_get_sock_by_channel()
153 static void rfcomm_sock_destruct(struct sock *sk) in rfcomm_sock_destruct() argument
155 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_destruct()
157 BT_DBG("sk %p dlc %p", sk, d); in rfcomm_sock_destruct()
159 skb_queue_purge(&sk->sk_receive_queue); in rfcomm_sock_destruct()
160 skb_queue_purge(&sk->sk_write_queue); in rfcomm_sock_destruct()
163 rfcomm_pi(sk)->dlc = NULL; in rfcomm_sock_destruct()
166 if (d->owner == sk) in rfcomm_sock_destruct()
175 struct sock *sk; in rfcomm_sock_cleanup_listen() local
180 while ((sk = bt_accept_dequeue(parent, NULL))) { in rfcomm_sock_cleanup_listen()
181 rfcomm_sock_close(sk); in rfcomm_sock_cleanup_listen()
182 rfcomm_sock_kill(sk); in rfcomm_sock_cleanup_listen()
192 static void rfcomm_sock_kill(struct sock *sk) in rfcomm_sock_kill() argument
194 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket) in rfcomm_sock_kill()
197 BT_DBG("sk %p state %d refcnt %d", sk, sk->sk_state, refcount_read(&sk->sk_refcnt)); in rfcomm_sock_kill()
200 bt_sock_unlink(&rfcomm_sk_list, sk); in rfcomm_sock_kill()
201 sock_set_flag(sk, SOCK_DEAD); in rfcomm_sock_kill()
202 sock_put(sk); in rfcomm_sock_kill()
205 static void __rfcomm_sock_close(struct sock *sk) in __rfcomm_sock_close() argument
207 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in __rfcomm_sock_close()
209 BT_DBG("sk %p state %d socket %p", sk, sk->sk_state, sk->sk_socket); in __rfcomm_sock_close()
211 switch (sk->sk_state) { in __rfcomm_sock_close()
213 rfcomm_sock_cleanup_listen(sk); in __rfcomm_sock_close()
224 sock_set_flag(sk, SOCK_ZAPPED); in __rfcomm_sock_close()
232 static void rfcomm_sock_close(struct sock *sk) in rfcomm_sock_close() argument
234 lock_sock(sk); in rfcomm_sock_close()
235 __rfcomm_sock_close(sk); in rfcomm_sock_close()
236 release_sock(sk); in rfcomm_sock_close()
239 static void rfcomm_sock_init(struct sock *sk, struct sock *parent) in rfcomm_sock_init() argument
241 struct rfcomm_pinfo *pi = rfcomm_pi(sk); in rfcomm_sock_init()
243 BT_DBG("sk %p", sk); in rfcomm_sock_init()
246 sk->sk_type = parent->sk_type; in rfcomm_sock_init()
253 security_sk_clone(parent, sk); in rfcomm_sock_init()
274 struct sock *sk; in rfcomm_sock_alloc() local
276 sk = sk_alloc(net, PF_BLUETOOTH, prio, &rfcomm_proto, kern); in rfcomm_sock_alloc()
277 if (!sk) in rfcomm_sock_alloc()
280 sock_init_data(sock, sk); in rfcomm_sock_alloc()
281 INIT_LIST_HEAD(&bt_sk(sk)->accept_q); in rfcomm_sock_alloc()
285 sk_free(sk); in rfcomm_sock_alloc()
292 rfcomm_pi(sk)->dlc = d; in rfcomm_sock_alloc()
293 d->owner = sk; in rfcomm_sock_alloc()
295 sk->sk_destruct = rfcomm_sock_destruct; in rfcomm_sock_alloc()
296 sk->sk_sndtimeo = RFCOMM_CONN_TIMEOUT; in rfcomm_sock_alloc()
298 sk->sk_sndbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10; in rfcomm_sock_alloc()
299 sk->sk_rcvbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10; in rfcomm_sock_alloc()
301 sock_reset_flag(sk, SOCK_ZAPPED); in rfcomm_sock_alloc()
303 sk->sk_protocol = proto; in rfcomm_sock_alloc()
304 sk->sk_state = BT_OPEN; in rfcomm_sock_alloc()
306 bt_sock_link(&rfcomm_sk_list, sk); in rfcomm_sock_alloc()
308 BT_DBG("sk %p", sk); in rfcomm_sock_alloc()
309 return sk; in rfcomm_sock_alloc()
315 struct sock *sk; in rfcomm_sock_create() local
326 sk = rfcomm_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern); in rfcomm_sock_create()
327 if (!sk) in rfcomm_sock_create()
330 rfcomm_sock_init(sk, NULL); in rfcomm_sock_create()
337 struct sock *sk = sock->sk; in rfcomm_sock_bind() local
348 BT_DBG("sk %p %pMR", sk, &sa.rc_bdaddr); in rfcomm_sock_bind()
350 lock_sock(sk); in rfcomm_sock_bind()
352 if (sk->sk_state != BT_OPEN) { in rfcomm_sock_bind()
357 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_bind()
369 bacpy(&rfcomm_pi(sk)->src, &sa.rc_bdaddr); in rfcomm_sock_bind()
370 rfcomm_pi(sk)->channel = sa.rc_channel; in rfcomm_sock_bind()
371 sk->sk_state = BT_BOUND; in rfcomm_sock_bind()
377 release_sock(sk); in rfcomm_sock_bind()
384 struct sock *sk = sock->sk; in rfcomm_sock_connect() local
385 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_connect()
388 BT_DBG("sk %p", sk); in rfcomm_sock_connect()
394 lock_sock(sk); in rfcomm_sock_connect()
396 if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND) { in rfcomm_sock_connect()
401 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_connect()
406 sk->sk_state = BT_CONNECT; in rfcomm_sock_connect()
407 bacpy(&rfcomm_pi(sk)->dst, &sa->rc_bdaddr); in rfcomm_sock_connect()
408 rfcomm_pi(sk)->channel = sa->rc_channel; in rfcomm_sock_connect()
410 d->sec_level = rfcomm_pi(sk)->sec_level; in rfcomm_sock_connect()
411 d->role_switch = rfcomm_pi(sk)->role_switch; in rfcomm_sock_connect()
413 err = rfcomm_dlc_open(d, &rfcomm_pi(sk)->src, &sa->rc_bdaddr, in rfcomm_sock_connect()
416 err = bt_sock_wait_state(sk, BT_CONNECTED, in rfcomm_sock_connect()
417 sock_sndtimeo(sk, flags & O_NONBLOCK)); in rfcomm_sock_connect()
420 release_sock(sk); in rfcomm_sock_connect()
426 struct sock *sk = sock->sk; in rfcomm_sock_listen() local
429 BT_DBG("sk %p backlog %d", sk, backlog); in rfcomm_sock_listen()
431 lock_sock(sk); in rfcomm_sock_listen()
433 if (sk->sk_state != BT_BOUND) { in rfcomm_sock_listen()
438 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_listen()
443 if (!rfcomm_pi(sk)->channel) { in rfcomm_sock_listen()
444 bdaddr_t *src = &rfcomm_pi(sk)->src; in rfcomm_sock_listen()
453 rfcomm_pi(sk)->channel = channel; in rfcomm_sock_listen()
464 sk->sk_max_ack_backlog = backlog; in rfcomm_sock_listen()
465 sk->sk_ack_backlog = 0; in rfcomm_sock_listen()
466 sk->sk_state = BT_LISTEN; in rfcomm_sock_listen()
469 release_sock(sk); in rfcomm_sock_listen()
477 struct sock *sk = sock->sk, *nsk; in rfcomm_sock_accept() local
481 lock_sock_nested(sk, SINGLE_DEPTH_NESTING); in rfcomm_sock_accept()
483 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_accept()
488 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK); in rfcomm_sock_accept()
490 BT_DBG("sk %p timeo %ld", sk, timeo); in rfcomm_sock_accept()
493 add_wait_queue_exclusive(sk_sleep(sk), &wait); in rfcomm_sock_accept()
495 if (sk->sk_state != BT_LISTEN) { in rfcomm_sock_accept()
500 nsk = bt_accept_dequeue(sk, newsock); in rfcomm_sock_accept()
514 release_sock(sk); in rfcomm_sock_accept()
518 lock_sock_nested(sk, SINGLE_DEPTH_NESTING); in rfcomm_sock_accept()
520 remove_wait_queue(sk_sleep(sk), &wait); in rfcomm_sock_accept()
530 release_sock(sk); in rfcomm_sock_accept()
537 struct sock *sk = sock->sk; in rfcomm_sock_getname() local
539 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_getname()
541 if (peer && sk->sk_state != BT_CONNECTED && in rfcomm_sock_getname()
542 sk->sk_state != BT_CONNECT && sk->sk_state != BT_CONNECT2) in rfcomm_sock_getname()
547 sa->rc_channel = rfcomm_pi(sk)->channel; in rfcomm_sock_getname()
549 bacpy(&sa->rc_bdaddr, &rfcomm_pi(sk)->dst); in rfcomm_sock_getname()
551 bacpy(&sa->rc_bdaddr, &rfcomm_pi(sk)->src); in rfcomm_sock_getname()
559 struct sock *sk = sock->sk; in rfcomm_sock_sendmsg() local
560 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_sendmsg()
570 if (sk->sk_shutdown & SEND_SHUTDOWN) in rfcomm_sock_sendmsg()
573 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_sendmsg()
575 lock_sock(sk); in rfcomm_sock_sendmsg()
577 sent = bt_sock_wait_ready(sk, msg->msg_flags); in rfcomm_sock_sendmsg()
579 release_sock(sk); in rfcomm_sock_sendmsg()
584 skb = bt_skb_sendmmsg(sk, msg, len, d->mtu, RFCOMM_SKB_HEAD_RESERVE, in rfcomm_sock_sendmsg()
599 struct sock *sk = sock->sk; in rfcomm_sock_recvmsg() local
600 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_recvmsg()
610 lock_sock(sk); in rfcomm_sock_recvmsg()
612 atomic_sub(len, &sk->sk_rmem_alloc); in rfcomm_sock_recvmsg()
614 if (atomic_read(&sk->sk_rmem_alloc) <= (sk->sk_rcvbuf >> 2)) in rfcomm_sock_recvmsg()
615 rfcomm_dlc_unthrottle(rfcomm_pi(sk)->dlc); in rfcomm_sock_recvmsg()
616 release_sock(sk); in rfcomm_sock_recvmsg()
624 struct sock *sk = sock->sk; in rfcomm_sock_setsockopt_old() local
628 BT_DBG("sk %p", sk); in rfcomm_sock_setsockopt_old()
630 lock_sock(sk); in rfcomm_sock_setsockopt_old()
645 rfcomm_pi(sk)->sec_level = BT_SECURITY_LOW; in rfcomm_sock_setsockopt_old()
647 rfcomm_pi(sk)->sec_level = BT_SECURITY_MEDIUM; in rfcomm_sock_setsockopt_old()
649 rfcomm_pi(sk)->sec_level = BT_SECURITY_HIGH; in rfcomm_sock_setsockopt_old()
651 rfcomm_pi(sk)->role_switch = (opt & RFCOMM_LM_MASTER); in rfcomm_sock_setsockopt_old()
659 release_sock(sk); in rfcomm_sock_setsockopt_old()
666 struct sock *sk = sock->sk; in rfcomm_sock_setsockopt() local
672 BT_DBG("sk %p", sk); in rfcomm_sock_setsockopt()
680 lock_sock(sk); in rfcomm_sock_setsockopt()
684 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_setsockopt()
702 rfcomm_pi(sk)->sec_level = sec.level; in rfcomm_sock_setsockopt()
706 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) { in rfcomm_sock_setsockopt()
717 set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags); in rfcomm_sock_setsockopt()
719 clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags); in rfcomm_sock_setsockopt()
728 release_sock(sk); in rfcomm_sock_setsockopt()
734 struct sock *sk = sock->sk; in rfcomm_sock_getsockopt_old() local
741 BT_DBG("sk %p", sk); in rfcomm_sock_getsockopt_old()
746 lock_sock(sk); in rfcomm_sock_getsockopt_old()
750 switch (rfcomm_pi(sk)->sec_level) { in rfcomm_sock_getsockopt_old()
770 if (rfcomm_pi(sk)->role_switch) in rfcomm_sock_getsockopt_old()
779 if (sk->sk_state != BT_CONNECTED && in rfcomm_sock_getsockopt_old()
780 !rfcomm_pi(sk)->dlc->defer_setup) { in rfcomm_sock_getsockopt_old()
785 l2cap_sk = rfcomm_pi(sk)->dlc->session->sock->sk; in rfcomm_sock_getsockopt_old()
803 release_sock(sk); in rfcomm_sock_getsockopt_old()
809 struct sock *sk = sock->sk; in rfcomm_sock_getsockopt() local
813 BT_DBG("sk %p", sk); in rfcomm_sock_getsockopt()
824 lock_sock(sk); in rfcomm_sock_getsockopt()
828 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_getsockopt()
833 sec.level = rfcomm_pi(sk)->sec_level; in rfcomm_sock_getsockopt()
843 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) { in rfcomm_sock_getsockopt()
848 if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags), in rfcomm_sock_getsockopt()
859 release_sock(sk); in rfcomm_sock_getsockopt()
865 struct sock *sk __maybe_unused = sock->sk; in rfcomm_sock_ioctl()
868 BT_DBG("sk %p cmd %x arg %lx", sk, cmd, arg); in rfcomm_sock_ioctl()
874 lock_sock(sk); in rfcomm_sock_ioctl()
875 err = rfcomm_dev_ioctl(sk, cmd, (void __user *) arg); in rfcomm_sock_ioctl()
876 release_sock(sk); in rfcomm_sock_ioctl()
894 struct sock *sk = sock->sk; in rfcomm_sock_shutdown() local
897 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_shutdown()
899 if (!sk) in rfcomm_sock_shutdown()
902 lock_sock(sk); in rfcomm_sock_shutdown()
903 if (!sk->sk_shutdown) { in rfcomm_sock_shutdown()
904 sk->sk_shutdown = SHUTDOWN_MASK; in rfcomm_sock_shutdown()
905 __rfcomm_sock_close(sk); in rfcomm_sock_shutdown()
907 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime && in rfcomm_sock_shutdown()
909 err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime); in rfcomm_sock_shutdown()
911 release_sock(sk); in rfcomm_sock_shutdown()
917 struct sock *sk = sock->sk; in rfcomm_sock_release() local
920 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_release()
922 if (!sk) in rfcomm_sock_release()
927 sock_orphan(sk); in rfcomm_sock_release()
928 rfcomm_sock_kill(sk); in rfcomm_sock_release()
938 struct sock *sk, *parent; in rfcomm_connect_ind() local
959 sk = rfcomm_sock_alloc(sock_net(parent), NULL, BTPROTO_RFCOMM, GFP_ATOMIC, 0); in rfcomm_connect_ind()
960 if (!sk) in rfcomm_connect_ind()
963 bt_sock_reclassify_lock(sk, BTPROTO_RFCOMM); in rfcomm_connect_ind()
965 rfcomm_sock_init(sk, parent); in rfcomm_connect_ind()
966 bacpy(&rfcomm_pi(sk)->src, &src); in rfcomm_connect_ind()
967 bacpy(&rfcomm_pi(sk)->dst, &dst); in rfcomm_connect_ind()
968 rfcomm_pi(sk)->channel = channel; in rfcomm_connect_ind()
970 sk->sk_state = BT_CONFIG; in rfcomm_connect_ind()
971 bt_accept_enqueue(parent, sk, true); in rfcomm_connect_ind()
974 *d = rfcomm_pi(sk)->dlc; in rfcomm_connect_ind()
988 struct sock *sk; in rfcomm_sock_debugfs_show() local
992 sk_for_each(sk, &rfcomm_sk_list.head) { in rfcomm_sock_debugfs_show()
994 &rfcomm_pi(sk)->src, &rfcomm_pi(sk)->dst, in rfcomm_sock_debugfs_show()
995 sk->sk_state, rfcomm_pi(sk)->channel); in rfcomm_sock_debugfs_show()