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;
53 if (!sk)
56 atomic_add(skb->len, &sk->sk_rmem_alloc);
57 skb_queue_tail(&sk->sk_receive_queue, skb);
58 sk->sk_data_ready(sk);
60 if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf)
66 struct sock *sk = d->owner, *parent;
68 if (!sk)
73 spin_lock_bh(&sk->sk_lock.slock);
76 sk->sk_err = err;
78 sk->sk_state = d->state;
80 parent = bt_sk(sk)->parent;
83 sock_set_flag(sk, SOCK_ZAPPED);
84 bt_accept_unlink(sk);
90 &rfcomm_pi(sk)->src, NULL);
91 sk->sk_state_change(sk);
94 spin_unlock_bh(&sk->sk_lock.slock);
96 if (parent && sock_flag(sk, SOCK_ZAPPED)) {
100 rfcomm_sock_kill(sk);
108 struct sock *sk = NULL;
110 sk_for_each(sk, &rfcomm_sk_list.head) {
111 if (rfcomm_pi(sk)->channel != channel)
114 if (bacmp(&rfcomm_pi(sk)->src, src))
117 if (sk->sk_state == BT_BOUND || sk->sk_state == BT_LISTEN)
121 return sk ? sk : NULL;
129 struct sock *sk = NULL, *sk1 = NULL;
133 sk_for_each(sk, &rfcomm_sk_list.head) {
134 if (state && sk->sk_state != state)
137 if (rfcomm_pi(sk)->channel == channel) {
139 if (!bacmp(&rfcomm_pi(sk)->src, src))
143 if (!bacmp(&rfcomm_pi(sk)->src, BDADDR_ANY))
144 sk1 = sk;
150 return sk ? sk : sk1;
153 static void rfcomm_sock_destruct(struct sock *sk)
155 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
157 BT_DBG("sk %p dlc %p", sk, d);
159 skb_queue_purge(&sk->sk_receive_queue);
160 skb_queue_purge(&sk->sk_write_queue);
163 rfcomm_pi(sk)->dlc = NULL;
166 if (d->owner == sk)
175 struct sock *sk;
180 while ((sk = bt_accept_dequeue(parent, NULL))) {
181 rfcomm_sock_close(sk);
182 rfcomm_sock_kill(sk);
192 static void rfcomm_sock_kill(struct sock *sk)
194 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
197 BT_DBG("sk %p state %d refcnt %d", sk, sk->sk_state, refcount_read(&sk->sk_refcnt));
200 bt_sock_unlink(&rfcomm_sk_list, sk);
201 sock_set_flag(sk, SOCK_DEAD);
202 sock_put(sk);
205 static void __rfcomm_sock_close(struct sock *sk)
207 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
209 BT_DBG("sk %p state %d socket %p", sk, sk->sk_state, sk->sk_socket);
211 switch (sk->sk_state) {
213 rfcomm_sock_cleanup_listen(sk);
224 sock_set_flag(sk, SOCK_ZAPPED);
232 static void rfcomm_sock_close(struct sock *sk)
234 lock_sock(sk);
235 __rfcomm_sock_close(sk);
236 release_sock(sk);
239 static void rfcomm_sock_init(struct sock *sk, struct sock *parent)
241 struct rfcomm_pinfo *pi = rfcomm_pi(sk);
243 BT_DBG("sk %p", sk);
246 sk->sk_type = parent->sk_type;
253 security_sk_clone(parent, sk);
274 struct sock *sk;
276 sk = sk_alloc(net, PF_BLUETOOTH, prio, &rfcomm_proto, kern);
277 if (!sk)
280 sock_init_data(sock, sk);
281 INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
285 sk_free(sk);
292 rfcomm_pi(sk)->dlc = d;
293 d->owner = sk;
295 sk->sk_destruct = rfcomm_sock_destruct;
296 sk->sk_sndtimeo = RFCOMM_CONN_TIMEOUT;
298 sk->sk_sndbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10;
299 sk->sk_rcvbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10;
301 sock_reset_flag(sk, SOCK_ZAPPED);
303 sk->sk_protocol = proto;
304 sk->sk_state = BT_OPEN;
306 bt_sock_link(&rfcomm_sk_list, sk);
308 BT_DBG("sk %p", sk);
309 return sk;
315 struct sock *sk;
326 sk = rfcomm_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern);
327 if (!sk)
330 rfcomm_sock_init(sk, NULL);
337 struct sock *sk = sock->sk;
348 BT_DBG("sk %p %pMR", sk, &sa.rc_bdaddr);
350 lock_sock(sk);
352 if (sk->sk_state != BT_OPEN) {
357 if (sk->sk_type != SOCK_STREAM) {
369 bacpy(&rfcomm_pi(sk)->src, &sa.rc_bdaddr);
370 rfcomm_pi(sk)->channel = sa.rc_channel;
371 sk->sk_state = BT_BOUND;
377 release_sock(sk);
384 struct sock *sk = sock->sk;
385 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
388 BT_DBG("sk %p", sk);
394 lock_sock(sk);
396 if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND) {
401 if (sk->sk_type != SOCK_STREAM) {
406 sk->sk_state = BT_CONNECT;
407 bacpy(&rfcomm_pi(sk)->dst, &sa->rc_bdaddr);
408 rfcomm_pi(sk)->channel = sa->rc_channel;
410 d->sec_level = rfcomm_pi(sk)->sec_level;
411 d->role_switch = rfcomm_pi(sk)->role_switch;
413 err = rfcomm_dlc_open(d, &rfcomm_pi(sk)->src, &sa->rc_bdaddr,
416 err = bt_sock_wait_state(sk, BT_CONNECTED,
417 sock_sndtimeo(sk, flags & O_NONBLOCK));
420 release_sock(sk);
426 struct sock *sk = sock->sk;
429 BT_DBG("sk %p backlog %d", sk, backlog);
431 lock_sock(sk);
433 if (sk->sk_state != BT_BOUND) {
438 if (sk->sk_type != SOCK_STREAM) {
443 if (!rfcomm_pi(sk)->channel) {
444 bdaddr_t *src = &rfcomm_pi(sk)->src;
453 rfcomm_pi(sk)->channel = channel;
464 sk->sk_max_ack_backlog = backlog;
465 sk->sk_ack_backlog = 0;
466 sk->sk_state = BT_LISTEN;
469 release_sock(sk);
477 struct sock *sk = sock->sk, *nsk;
481 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
483 if (sk->sk_type != SOCK_STREAM) {
488 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
490 BT_DBG("sk %p timeo %ld", sk, timeo);
493 add_wait_queue_exclusive(sk_sleep(sk), &wait);
495 if (sk->sk_state != BT_LISTEN) {
500 nsk = bt_accept_dequeue(sk, newsock);
514 release_sock(sk);
518 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
520 remove_wait_queue(sk_sleep(sk), &wait);
530 release_sock(sk);
537 struct sock *sk = sock->sk;
539 BT_DBG("sock %p, sk %p", sock, sk);
541 if (peer && sk->sk_state != BT_CONNECTED &&
542 sk->sk_state != BT_CONNECT && sk->sk_state != BT_CONNECT2)
547 sa->rc_channel = rfcomm_pi(sk)->channel;
549 bacpy(&sa->rc_bdaddr, &rfcomm_pi(sk)->dst);
551 bacpy(&sa->rc_bdaddr, &rfcomm_pi(sk)->src);
559 struct sock *sk = sock->sk;
560 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
570 if (sk->sk_shutdown & SEND_SHUTDOWN)
573 BT_DBG("sock %p, sk %p", sock, sk);
575 lock_sock(sk);
577 sent = bt_sock_wait_ready(sk, msg->msg_flags);
579 release_sock(sk);
584 skb = bt_skb_sendmmsg(sk, msg, len, d->mtu, RFCOMM_SKB_HEAD_RESERVE,
599 struct sock *sk = sock->sk;
600 struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc;
610 lock_sock(sk);
612 atomic_sub(len, &sk->sk_rmem_alloc);
614 if (atomic_read(&sk->sk_rmem_alloc) <= (sk->sk_rcvbuf >> 2))
615 rfcomm_dlc_unthrottle(rfcomm_pi(sk)->dlc);
616 release_sock(sk);
624 struct sock *sk = sock->sk;
628 BT_DBG("sk %p", sk);
630 lock_sock(sk);
645 rfcomm_pi(sk)->sec_level = BT_SECURITY_LOW;
647 rfcomm_pi(sk)->sec_level = BT_SECURITY_MEDIUM;
649 rfcomm_pi(sk)->sec_level = BT_SECURITY_HIGH;
651 rfcomm_pi(sk)->role_switch = (opt & RFCOMM_LM_MASTER);
659 release_sock(sk);
666 struct sock *sk = sock->sk;
671 BT_DBG("sk %p", sk);
679 lock_sock(sk);
683 if (sk->sk_type != SOCK_STREAM) {
699 rfcomm_pi(sk)->sec_level = sec.level;
703 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
713 set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
715 clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
724 release_sock(sk);
730 struct sock *sk = sock->sk;
737 BT_DBG("sk %p", sk);
742 lock_sock(sk);
746 switch (rfcomm_pi(sk)->sec_level) {
766 if (rfcomm_pi(sk)->role_switch)
775 if (sk->sk_state != BT_CONNECTED &&
776 !rfcomm_pi(sk)->dlc->defer_setup) {
781 l2cap_sk = rfcomm_pi(sk)->dlc->session->sock->sk;
799 release_sock(sk);
805 struct sock *sk = sock->sk;
809 BT_DBG("sk %p", sk);
820 lock_sock(sk);
824 if (sk->sk_type != SOCK_STREAM) {
829 sec.level = rfcomm_pi(sk)->sec_level;
839 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
844 if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags),
855 release_sock(sk);
861 struct sock *sk __maybe_unused = sock->sk;
864 BT_DBG("sk %p cmd %x arg %lx", sk, cmd, arg);
870 lock_sock(sk);
871 err = rfcomm_dev_ioctl(sk, cmd, (void __user *) arg);
872 release_sock(sk);
890 struct sock *sk = sock->sk;
893 BT_DBG("sock %p, sk %p", sock, sk);
895 if (!sk)
898 lock_sock(sk);
899 if (!sk->sk_shutdown) {
900 sk->sk_shutdown = SHUTDOWN_MASK;
901 __rfcomm_sock_close(sk);
903 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
905 err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
907 release_sock(sk);
913 struct sock *sk = sock->sk;
916 BT_DBG("sock %p, sk %p", sock, sk);
918 if (!sk)
923 sock_orphan(sk);
924 rfcomm_sock_kill(sk);
934 struct sock *sk, *parent;
955 sk = rfcomm_sock_alloc(sock_net(parent), NULL, BTPROTO_RFCOMM, GFP_ATOMIC, 0);
956 if (!sk)
959 bt_sock_reclassify_lock(sk, BTPROTO_RFCOMM);
961 rfcomm_sock_init(sk, parent);
962 bacpy(&rfcomm_pi(sk)->src, &src);
963 bacpy(&rfcomm_pi(sk)->dst, &dst);
964 rfcomm_pi(sk)->channel = channel;
966 sk->sk_state = BT_CONFIG;
967 bt_accept_enqueue(parent, sk, true);
970 *d = rfcomm_pi(sk)->dlc;
984 struct sock *sk;
988 sk_for_each(sk, &rfcomm_sk_list.head) {
990 &rfcomm_pi(sk)->src, &rfcomm_pi(sk)->dst,
991 sk->sk_state, rfcomm_pi(sk)->channel);