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 lock_sock(sk); 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 release_sock(sk); 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()
275 struct sock *sk; in rfcomm_sock_alloc() local
281 sk = bt_sock_alloc(net, sock, &rfcomm_proto, proto, prio, kern); in rfcomm_sock_alloc()
282 if (!sk) { in rfcomm_sock_alloc()
290 rfcomm_pi(sk)->dlc = d; in rfcomm_sock_alloc()
291 d->owner = sk; in rfcomm_sock_alloc()
293 sk->sk_destruct = rfcomm_sock_destruct; in rfcomm_sock_alloc()
294 sk->sk_sndtimeo = RFCOMM_CONN_TIMEOUT; in rfcomm_sock_alloc()
296 sk->sk_sndbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10; in rfcomm_sock_alloc()
297 sk->sk_rcvbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10; in rfcomm_sock_alloc()
299 bt_sock_link(&rfcomm_sk_list, sk); in rfcomm_sock_alloc()
301 BT_DBG("sk %p", sk); in rfcomm_sock_alloc()
302 return sk; in rfcomm_sock_alloc()
308 struct sock *sk; in rfcomm_sock_create() local
319 sk = rfcomm_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern); in rfcomm_sock_create()
320 if (!sk) in rfcomm_sock_create()
323 rfcomm_sock_init(sk, NULL); in rfcomm_sock_create()
330 struct sock *sk = sock->sk; in rfcomm_sock_bind() local
341 BT_DBG("sk %p %pMR", sk, &sa.rc_bdaddr); in rfcomm_sock_bind()
343 lock_sock(sk); in rfcomm_sock_bind()
345 if (sk->sk_state != BT_OPEN) { in rfcomm_sock_bind()
350 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_bind()
362 bacpy(&rfcomm_pi(sk)->src, &sa.rc_bdaddr); in rfcomm_sock_bind()
363 rfcomm_pi(sk)->channel = sa.rc_channel; in rfcomm_sock_bind()
364 sk->sk_state = BT_BOUND; in rfcomm_sock_bind()
370 release_sock(sk); in rfcomm_sock_bind()
377 struct sock *sk = sock->sk; in rfcomm_sock_connect() local
378 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_connect()
381 BT_DBG("sk %p", sk); in rfcomm_sock_connect()
387 sock_hold(sk); in rfcomm_sock_connect()
388 lock_sock(sk); in rfcomm_sock_connect()
390 if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND) { in rfcomm_sock_connect()
395 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_connect()
400 sk->sk_state = BT_CONNECT; in rfcomm_sock_connect()
401 bacpy(&rfcomm_pi(sk)->dst, &sa->rc_bdaddr); in rfcomm_sock_connect()
402 rfcomm_pi(sk)->channel = sa->rc_channel; in rfcomm_sock_connect()
404 d->sec_level = rfcomm_pi(sk)->sec_level; in rfcomm_sock_connect()
405 d->role_switch = rfcomm_pi(sk)->role_switch; in rfcomm_sock_connect()
408 release_sock(sk); in rfcomm_sock_connect()
409 err = rfcomm_dlc_open(d, &rfcomm_pi(sk)->src, &sa->rc_bdaddr, in rfcomm_sock_connect()
411 lock_sock(sk); in rfcomm_sock_connect()
412 if (!err && !sock_flag(sk, SOCK_ZAPPED)) in rfcomm_sock_connect()
413 err = bt_sock_wait_state(sk, BT_CONNECTED, in rfcomm_sock_connect()
414 sock_sndtimeo(sk, flags & O_NONBLOCK)); in rfcomm_sock_connect()
417 release_sock(sk); in rfcomm_sock_connect()
418 sock_put(sk); in rfcomm_sock_connect()
424 struct sock *sk = sock->sk; in rfcomm_sock_listen() local
427 BT_DBG("sk %p backlog %d", sk, backlog); in rfcomm_sock_listen()
429 lock_sock(sk); in rfcomm_sock_listen()
431 if (sk->sk_state != BT_BOUND) { in rfcomm_sock_listen()
436 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_listen()
441 if (!rfcomm_pi(sk)->channel) { in rfcomm_sock_listen()
442 bdaddr_t *src = &rfcomm_pi(sk)->src; in rfcomm_sock_listen()
451 rfcomm_pi(sk)->channel = channel; in rfcomm_sock_listen()
462 sk->sk_max_ack_backlog = backlog; in rfcomm_sock_listen()
463 sk->sk_ack_backlog = 0; in rfcomm_sock_listen()
464 sk->sk_state = BT_LISTEN; in rfcomm_sock_listen()
467 release_sock(sk); in rfcomm_sock_listen()
475 struct sock *sk = sock->sk, *nsk; in rfcomm_sock_accept() local
479 lock_sock_nested(sk, SINGLE_DEPTH_NESTING); in rfcomm_sock_accept()
481 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_accept()
486 timeo = sock_rcvtimeo(sk, arg->flags & O_NONBLOCK); in rfcomm_sock_accept()
488 BT_DBG("sk %p timeo %ld", sk, timeo); in rfcomm_sock_accept()
491 add_wait_queue_exclusive(sk_sleep(sk), &wait); in rfcomm_sock_accept()
493 if (sk->sk_state != BT_LISTEN) { in rfcomm_sock_accept()
498 nsk = bt_accept_dequeue(sk, newsock); in rfcomm_sock_accept()
512 release_sock(sk); in rfcomm_sock_accept()
516 lock_sock_nested(sk, SINGLE_DEPTH_NESTING); in rfcomm_sock_accept()
518 remove_wait_queue(sk_sleep(sk), &wait); in rfcomm_sock_accept()
528 release_sock(sk); in rfcomm_sock_accept()
535 struct sock *sk = sock->sk; in rfcomm_sock_getname() local
537 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_getname()
539 if (peer && sk->sk_state != BT_CONNECTED && in rfcomm_sock_getname()
540 sk->sk_state != BT_CONNECT && sk->sk_state != BT_CONNECT2) in rfcomm_sock_getname()
545 sa->rc_channel = rfcomm_pi(sk)->channel; in rfcomm_sock_getname()
547 bacpy(&sa->rc_bdaddr, &rfcomm_pi(sk)->dst); in rfcomm_sock_getname()
549 bacpy(&sa->rc_bdaddr, &rfcomm_pi(sk)->src); in rfcomm_sock_getname()
557 struct sock *sk = sock->sk; in rfcomm_sock_sendmsg() local
558 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_sendmsg()
568 if (sk->sk_shutdown & SEND_SHUTDOWN) in rfcomm_sock_sendmsg()
571 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_sendmsg()
573 lock_sock(sk); in rfcomm_sock_sendmsg()
575 sent = bt_sock_wait_ready(sk, msg->msg_flags); in rfcomm_sock_sendmsg()
577 release_sock(sk); in rfcomm_sock_sendmsg()
582 skb = bt_skb_sendmmsg(sk, msg, len, d->mtu, RFCOMM_SKB_HEAD_RESERVE, in rfcomm_sock_sendmsg()
597 struct sock *sk = sock->sk; in rfcomm_sock_recvmsg() local
598 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_recvmsg()
608 lock_sock(sk); in rfcomm_sock_recvmsg()
610 atomic_sub(len, &sk->sk_rmem_alloc); in rfcomm_sock_recvmsg()
612 if (atomic_read(&sk->sk_rmem_alloc) <= (sk->sk_rcvbuf >> 2)) in rfcomm_sock_recvmsg()
613 rfcomm_dlc_unthrottle(rfcomm_pi(sk)->dlc); in rfcomm_sock_recvmsg()
614 release_sock(sk); in rfcomm_sock_recvmsg()
622 struct sock *sk = sock->sk; in rfcomm_sock_setsockopt_old() local
626 BT_DBG("sk %p", sk); in rfcomm_sock_setsockopt_old()
628 lock_sock(sk); in rfcomm_sock_setsockopt_old()
642 rfcomm_pi(sk)->sec_level = BT_SECURITY_LOW; in rfcomm_sock_setsockopt_old()
644 rfcomm_pi(sk)->sec_level = BT_SECURITY_MEDIUM; in rfcomm_sock_setsockopt_old()
646 rfcomm_pi(sk)->sec_level = BT_SECURITY_HIGH; in rfcomm_sock_setsockopt_old()
648 rfcomm_pi(sk)->role_switch = (opt & RFCOMM_LM_MASTER); in rfcomm_sock_setsockopt_old()
656 release_sock(sk); in rfcomm_sock_setsockopt_old()
663 struct sock *sk = sock->sk; in rfcomm_sock_setsockopt() local
668 BT_DBG("sk %p", sk); in rfcomm_sock_setsockopt()
676 lock_sock(sk); in rfcomm_sock_setsockopt()
680 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_setsockopt()
696 rfcomm_pi(sk)->sec_level = sec.level; in rfcomm_sock_setsockopt()
700 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) { in rfcomm_sock_setsockopt()
710 set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags); in rfcomm_sock_setsockopt()
712 clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags); in rfcomm_sock_setsockopt()
721 release_sock(sk); in rfcomm_sock_setsockopt()
727 struct sock *sk = sock->sk; in rfcomm_sock_getsockopt_old() local
735 BT_DBG("sk %p", sk); in rfcomm_sock_getsockopt_old()
740 lock_sock(sk); in rfcomm_sock_getsockopt_old()
744 switch (rfcomm_pi(sk)->sec_level) { in rfcomm_sock_getsockopt_old()
764 if (rfcomm_pi(sk)->role_switch) in rfcomm_sock_getsockopt_old()
773 if (sk->sk_state != BT_CONNECTED && in rfcomm_sock_getsockopt_old()
774 !rfcomm_pi(sk)->dlc->defer_setup) { in rfcomm_sock_getsockopt_old()
779 l2cap_sk = rfcomm_pi(sk)->dlc->session->sock->sk; in rfcomm_sock_getsockopt_old()
797 release_sock(sk); in rfcomm_sock_getsockopt_old()
803 struct sock *sk = sock->sk; in rfcomm_sock_getsockopt() local
808 BT_DBG("sk %p", sk); in rfcomm_sock_getsockopt()
819 lock_sock(sk); in rfcomm_sock_getsockopt()
823 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_getsockopt()
828 sec.level = rfcomm_pi(sk)->sec_level; in rfcomm_sock_getsockopt()
838 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) { in rfcomm_sock_getsockopt()
843 if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags), in rfcomm_sock_getsockopt()
854 release_sock(sk); in rfcomm_sock_getsockopt()
860 struct sock *sk __maybe_unused = sock->sk; in rfcomm_sock_ioctl()
863 BT_DBG("sk %p cmd %x arg %lx", sk, cmd, arg); in rfcomm_sock_ioctl()
869 err = rfcomm_dev_ioctl(sk, cmd, (void __user *) arg); in rfcomm_sock_ioctl()
887 struct sock *sk = sock->sk; in rfcomm_sock_shutdown() local
890 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_shutdown()
892 if (!sk) in rfcomm_sock_shutdown()
895 lock_sock(sk); in rfcomm_sock_shutdown()
896 if (!sk->sk_shutdown) { in rfcomm_sock_shutdown()
897 sk->sk_shutdown = SHUTDOWN_MASK; in rfcomm_sock_shutdown()
899 release_sock(sk); in rfcomm_sock_shutdown()
900 __rfcomm_sock_close(sk); in rfcomm_sock_shutdown()
901 lock_sock(sk); in rfcomm_sock_shutdown()
903 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime && in rfcomm_sock_shutdown()
905 err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime); in rfcomm_sock_shutdown()
907 release_sock(sk); in rfcomm_sock_shutdown()
913 struct sock *sk = sock->sk; in rfcomm_sock_release() local
916 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_release()
918 if (!sk) in rfcomm_sock_release()
923 sock_orphan(sk); in rfcomm_sock_release()
924 rfcomm_sock_kill(sk); in rfcomm_sock_release()
934 struct sock *sk, *parent; in rfcomm_connect_ind() local
955 sk = rfcomm_sock_alloc(sock_net(parent), NULL, BTPROTO_RFCOMM, GFP_ATOMIC, 0); in rfcomm_connect_ind()
956 if (!sk) in rfcomm_connect_ind()
959 bt_sock_reclassify_lock(sk, BTPROTO_RFCOMM); in rfcomm_connect_ind()
961 rfcomm_sock_init(sk, parent); in rfcomm_connect_ind()
962 bacpy(&rfcomm_pi(sk)->src, &src); in rfcomm_connect_ind()
963 bacpy(&rfcomm_pi(sk)->dst, &dst); in rfcomm_connect_ind()
964 rfcomm_pi(sk)->channel = channel; in rfcomm_connect_ind()
966 sk->sk_state = BT_CONFIG; in rfcomm_connect_ind()
967 bt_accept_enqueue(parent, sk, true); in rfcomm_connect_ind()
970 *d = rfcomm_pi(sk)->dlc; in rfcomm_connect_ind()
984 struct sock *sk; in rfcomm_sock_debugfs_show() local
988 sk_for_each(sk, &rfcomm_sk_list.head) { in rfcomm_sock_debugfs_show()
990 &rfcomm_pi(sk)->src, &rfcomm_pi(sk)->dst, in rfcomm_sock_debugfs_show()
991 sk->sk_state, rfcomm_pi(sk)->channel); in rfcomm_sock_debugfs_show()