• Home
  • Raw
  • Download

Lines Matching refs:sk

42 static void rfcomm_sock_close(struct sock *sk);
43 static void rfcomm_sock_kill(struct sock *sk);
51 struct sock *sk = d->owner; in rfcomm_sk_data_ready() local
52 if (!sk) in rfcomm_sk_data_ready()
55 atomic_add(skb->len, &sk->sk_rmem_alloc); in rfcomm_sk_data_ready()
56 skb_queue_tail(&sk->sk_receive_queue, skb); in rfcomm_sk_data_ready()
57 sk->sk_data_ready(sk); in rfcomm_sk_data_ready()
59 if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf) in rfcomm_sk_data_ready()
65 struct sock *sk = d->owner, *parent; in rfcomm_sk_state_change() local
68 if (!sk) in rfcomm_sk_state_change()
74 bh_lock_sock(sk); in rfcomm_sk_state_change()
77 sk->sk_err = err; in rfcomm_sk_state_change()
79 sk->sk_state = d->state; in rfcomm_sk_state_change()
81 parent = bt_sk(sk)->parent; in rfcomm_sk_state_change()
84 sock_set_flag(sk, SOCK_ZAPPED); in rfcomm_sk_state_change()
85 bt_accept_unlink(sk); in rfcomm_sk_state_change()
91 &rfcomm_pi(sk)->src, NULL); in rfcomm_sk_state_change()
92 sk->sk_state_change(sk); in rfcomm_sk_state_change()
95 bh_unlock_sock(sk); in rfcomm_sk_state_change()
98 if (parent && sock_flag(sk, SOCK_ZAPPED)) { in rfcomm_sk_state_change()
102 rfcomm_sock_kill(sk); in rfcomm_sk_state_change()
110 struct sock *sk = NULL; in __rfcomm_get_listen_sock_by_addr() local
112 sk_for_each(sk, &rfcomm_sk_list.head) { in __rfcomm_get_listen_sock_by_addr()
113 if (rfcomm_pi(sk)->channel != channel) in __rfcomm_get_listen_sock_by_addr()
116 if (bacmp(&rfcomm_pi(sk)->src, src)) in __rfcomm_get_listen_sock_by_addr()
119 if (sk->sk_state == BT_BOUND || sk->sk_state == BT_LISTEN) in __rfcomm_get_listen_sock_by_addr()
123 return sk ? sk : NULL; in __rfcomm_get_listen_sock_by_addr()
131 struct sock *sk = NULL, *sk1 = NULL; in rfcomm_get_sock_by_channel() local
135 sk_for_each(sk, &rfcomm_sk_list.head) { in rfcomm_get_sock_by_channel()
136 if (state && sk->sk_state != state) in rfcomm_get_sock_by_channel()
139 if (rfcomm_pi(sk)->channel == channel) { in rfcomm_get_sock_by_channel()
141 if (!bacmp(&rfcomm_pi(sk)->src, src)) in rfcomm_get_sock_by_channel()
145 if (!bacmp(&rfcomm_pi(sk)->src, BDADDR_ANY)) in rfcomm_get_sock_by_channel()
146 sk1 = sk; in rfcomm_get_sock_by_channel()
152 return sk ? sk : sk1; in rfcomm_get_sock_by_channel()
155 static void rfcomm_sock_destruct(struct sock *sk) in rfcomm_sock_destruct() argument
157 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_destruct()
159 BT_DBG("sk %p dlc %p", sk, d); in rfcomm_sock_destruct()
161 skb_queue_purge(&sk->sk_receive_queue); in rfcomm_sock_destruct()
162 skb_queue_purge(&sk->sk_write_queue); in rfcomm_sock_destruct()
165 rfcomm_pi(sk)->dlc = NULL; in rfcomm_sock_destruct()
168 if (d->owner == sk) in rfcomm_sock_destruct()
177 struct sock *sk; in rfcomm_sock_cleanup_listen() local
182 while ((sk = bt_accept_dequeue(parent, NULL))) { in rfcomm_sock_cleanup_listen()
183 rfcomm_sock_close(sk); in rfcomm_sock_cleanup_listen()
184 rfcomm_sock_kill(sk); in rfcomm_sock_cleanup_listen()
194 static void rfcomm_sock_kill(struct sock *sk) in rfcomm_sock_kill() argument
196 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket) in rfcomm_sock_kill()
199 BT_DBG("sk %p state %d refcnt %d", sk, sk->sk_state, atomic_read(&sk->sk_refcnt)); in rfcomm_sock_kill()
202 bt_sock_unlink(&rfcomm_sk_list, sk); in rfcomm_sock_kill()
203 sock_set_flag(sk, SOCK_DEAD); in rfcomm_sock_kill()
204 sock_put(sk); in rfcomm_sock_kill()
207 static void __rfcomm_sock_close(struct sock *sk) in __rfcomm_sock_close() argument
209 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in __rfcomm_sock_close()
211 BT_DBG("sk %p state %d socket %p", sk, sk->sk_state, sk->sk_socket); in __rfcomm_sock_close()
213 switch (sk->sk_state) { in __rfcomm_sock_close()
215 rfcomm_sock_cleanup_listen(sk); in __rfcomm_sock_close()
225 sock_set_flag(sk, SOCK_ZAPPED); in __rfcomm_sock_close()
233 static void rfcomm_sock_close(struct sock *sk) in rfcomm_sock_close() argument
235 lock_sock(sk); in rfcomm_sock_close()
236 __rfcomm_sock_close(sk); in rfcomm_sock_close()
237 release_sock(sk); in rfcomm_sock_close()
240 static void rfcomm_sock_init(struct sock *sk, struct sock *parent) in rfcomm_sock_init() argument
242 struct rfcomm_pinfo *pi = rfcomm_pi(sk); in rfcomm_sock_init()
244 BT_DBG("sk %p", sk); in rfcomm_sock_init()
247 sk->sk_type = parent->sk_type; in rfcomm_sock_init()
254 security_sk_clone(parent, sk); in rfcomm_sock_init()
275 struct sock *sk; in rfcomm_sock_alloc() local
277 sk = sk_alloc(net, PF_BLUETOOTH, prio, &rfcomm_proto, kern); in rfcomm_sock_alloc()
278 if (!sk) in rfcomm_sock_alloc()
281 sock_init_data(sock, sk); in rfcomm_sock_alloc()
282 INIT_LIST_HEAD(&bt_sk(sk)->accept_q); in rfcomm_sock_alloc()
286 sk_free(sk); in rfcomm_sock_alloc()
293 rfcomm_pi(sk)->dlc = d; in rfcomm_sock_alloc()
294 d->owner = sk; in rfcomm_sock_alloc()
296 sk->sk_destruct = rfcomm_sock_destruct; in rfcomm_sock_alloc()
297 sk->sk_sndtimeo = RFCOMM_CONN_TIMEOUT; in rfcomm_sock_alloc()
299 sk->sk_sndbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10; in rfcomm_sock_alloc()
300 sk->sk_rcvbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10; in rfcomm_sock_alloc()
302 sock_reset_flag(sk, SOCK_ZAPPED); in rfcomm_sock_alloc()
304 sk->sk_protocol = proto; in rfcomm_sock_alloc()
305 sk->sk_state = BT_OPEN; in rfcomm_sock_alloc()
307 bt_sock_link(&rfcomm_sk_list, sk); in rfcomm_sock_alloc()
309 BT_DBG("sk %p", sk); in rfcomm_sock_alloc()
310 return sk; in rfcomm_sock_alloc()
316 struct sock *sk; in rfcomm_sock_create() local
327 sk = rfcomm_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern); in rfcomm_sock_create()
328 if (!sk) in rfcomm_sock_create()
331 rfcomm_sock_init(sk, NULL); in rfcomm_sock_create()
338 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()
476 struct sock *sk = sock->sk, *nsk; in rfcomm_sock_accept() local
480 lock_sock_nested(sk, SINGLE_DEPTH_NESTING); in rfcomm_sock_accept()
482 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_accept()
487 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK); in rfcomm_sock_accept()
489 BT_DBG("sk %p timeo %ld", sk, timeo); in rfcomm_sock_accept()
492 add_wait_queue_exclusive(sk_sleep(sk), &wait); in rfcomm_sock_accept()
494 if (sk->sk_state != BT_LISTEN) { in rfcomm_sock_accept()
499 nsk = bt_accept_dequeue(sk, newsock); in rfcomm_sock_accept()
513 release_sock(sk); in rfcomm_sock_accept()
517 lock_sock_nested(sk, SINGLE_DEPTH_NESTING); in rfcomm_sock_accept()
519 remove_wait_queue(sk_sleep(sk), &wait); in rfcomm_sock_accept()
529 release_sock(sk); in rfcomm_sock_accept()
536 struct sock *sk = sock->sk; in rfcomm_sock_getname() local
538 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_getname()
540 if (peer && sk->sk_state != BT_CONNECTED && in rfcomm_sock_getname()
541 sk->sk_state != BT_CONNECT && sk->sk_state != BT_CONNECT2) in rfcomm_sock_getname()
546 sa->rc_channel = rfcomm_pi(sk)->channel; in rfcomm_sock_getname()
548 bacpy(&sa->rc_bdaddr, &rfcomm_pi(sk)->dst); in rfcomm_sock_getname()
550 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()
585 skb = sock_alloc_send_skb(sk, size + RFCOMM_SKB_RESERVE, in rfcomm_sock_sendmsg()
602 skb->priority = sk->sk_priority; in rfcomm_sock_sendmsg()
617 release_sock(sk); in rfcomm_sock_sendmsg()
625 struct sock *sk = sock->sk; in rfcomm_sock_recvmsg() local
626 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; in rfcomm_sock_recvmsg()
636 lock_sock(sk); in rfcomm_sock_recvmsg()
638 atomic_sub(len, &sk->sk_rmem_alloc); in rfcomm_sock_recvmsg()
640 if (atomic_read(&sk->sk_rmem_alloc) <= (sk->sk_rcvbuf >> 2)) in rfcomm_sock_recvmsg()
641 rfcomm_dlc_unthrottle(rfcomm_pi(sk)->dlc); in rfcomm_sock_recvmsg()
642 release_sock(sk); in rfcomm_sock_recvmsg()
649 struct sock *sk = sock->sk; in rfcomm_sock_setsockopt_old() local
653 BT_DBG("sk %p", sk); in rfcomm_sock_setsockopt_old()
655 lock_sock(sk); in rfcomm_sock_setsockopt_old()
670 rfcomm_pi(sk)->sec_level = BT_SECURITY_LOW; in rfcomm_sock_setsockopt_old()
672 rfcomm_pi(sk)->sec_level = BT_SECURITY_MEDIUM; in rfcomm_sock_setsockopt_old()
674 rfcomm_pi(sk)->sec_level = BT_SECURITY_HIGH; in rfcomm_sock_setsockopt_old()
676 rfcomm_pi(sk)->role_switch = (opt & RFCOMM_LM_MASTER); in rfcomm_sock_setsockopt_old()
684 release_sock(sk); in rfcomm_sock_setsockopt_old()
690 struct sock *sk = sock->sk; in rfcomm_sock_setsockopt() local
696 BT_DBG("sk %p", sk); in rfcomm_sock_setsockopt()
704 lock_sock(sk); in rfcomm_sock_setsockopt()
708 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_setsockopt()
726 rfcomm_pi(sk)->sec_level = sec.level; in rfcomm_sock_setsockopt()
730 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) { in rfcomm_sock_setsockopt()
741 set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags); in rfcomm_sock_setsockopt()
743 clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags); in rfcomm_sock_setsockopt()
752 release_sock(sk); in rfcomm_sock_setsockopt()
758 struct sock *sk = sock->sk; in rfcomm_sock_getsockopt_old() local
765 BT_DBG("sk %p", sk); in rfcomm_sock_getsockopt_old()
770 lock_sock(sk); in rfcomm_sock_getsockopt_old()
774 switch (rfcomm_pi(sk)->sec_level) { in rfcomm_sock_getsockopt_old()
794 if (rfcomm_pi(sk)->role_switch) in rfcomm_sock_getsockopt_old()
803 if (sk->sk_state != BT_CONNECTED && in rfcomm_sock_getsockopt_old()
804 !rfcomm_pi(sk)->dlc->defer_setup) { in rfcomm_sock_getsockopt_old()
809 l2cap_sk = rfcomm_pi(sk)->dlc->session->sock->sk; in rfcomm_sock_getsockopt_old()
827 release_sock(sk); in rfcomm_sock_getsockopt_old()
833 struct sock *sk = sock->sk; in rfcomm_sock_getsockopt() local
837 BT_DBG("sk %p", sk); in rfcomm_sock_getsockopt()
848 lock_sock(sk); in rfcomm_sock_getsockopt()
852 if (sk->sk_type != SOCK_STREAM) { in rfcomm_sock_getsockopt()
857 sec.level = rfcomm_pi(sk)->sec_level; in rfcomm_sock_getsockopt()
867 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) { in rfcomm_sock_getsockopt()
872 if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags), in rfcomm_sock_getsockopt()
883 release_sock(sk); in rfcomm_sock_getsockopt()
889 struct sock *sk __maybe_unused = sock->sk; in rfcomm_sock_ioctl()
892 BT_DBG("sk %p cmd %x arg %lx", sk, cmd, arg); in rfcomm_sock_ioctl()
898 lock_sock(sk); in rfcomm_sock_ioctl()
899 err = rfcomm_dev_ioctl(sk, cmd, (void __user *) arg); in rfcomm_sock_ioctl()
900 release_sock(sk); in rfcomm_sock_ioctl()
911 struct sock *sk = sock->sk; in rfcomm_sock_shutdown() local
914 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_shutdown()
916 if (!sk) in rfcomm_sock_shutdown()
919 lock_sock(sk); in rfcomm_sock_shutdown()
920 if (!sk->sk_shutdown) { in rfcomm_sock_shutdown()
921 sk->sk_shutdown = SHUTDOWN_MASK; in rfcomm_sock_shutdown()
922 __rfcomm_sock_close(sk); in rfcomm_sock_shutdown()
924 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime && in rfcomm_sock_shutdown()
926 err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime); in rfcomm_sock_shutdown()
928 release_sock(sk); in rfcomm_sock_shutdown()
934 struct sock *sk = sock->sk; in rfcomm_sock_release() local
937 BT_DBG("sock %p, sk %p", sock, sk); in rfcomm_sock_release()
939 if (!sk) in rfcomm_sock_release()
944 sock_orphan(sk); in rfcomm_sock_release()
945 rfcomm_sock_kill(sk); in rfcomm_sock_release()
955 struct sock *sk, *parent; in rfcomm_connect_ind() local
976 sk = rfcomm_sock_alloc(sock_net(parent), NULL, BTPROTO_RFCOMM, GFP_ATOMIC, 0); in rfcomm_connect_ind()
977 if (!sk) in rfcomm_connect_ind()
980 bt_sock_reclassify_lock(sk, BTPROTO_RFCOMM); in rfcomm_connect_ind()
982 rfcomm_sock_init(sk, parent); in rfcomm_connect_ind()
983 bacpy(&rfcomm_pi(sk)->src, &src); in rfcomm_connect_ind()
984 bacpy(&rfcomm_pi(sk)->dst, &dst); in rfcomm_connect_ind()
985 rfcomm_pi(sk)->channel = channel; in rfcomm_connect_ind()
987 sk->sk_state = BT_CONFIG; in rfcomm_connect_ind()
988 bt_accept_enqueue(parent, sk); in rfcomm_connect_ind()
991 *d = rfcomm_pi(sk)->dlc; in rfcomm_connect_ind()
1005 struct sock *sk; in rfcomm_sock_debugfs_show() local
1009 sk_for_each(sk, &rfcomm_sk_list.head) { in rfcomm_sock_debugfs_show()
1011 &rfcomm_pi(sk)->src, &rfcomm_pi(sk)->dst, in rfcomm_sock_debugfs_show()
1012 sk->sk_state, rfcomm_pi(sk)->channel); in rfcomm_sock_debugfs_show()