• Home
  • Raw
  • Download

Lines Matching refs:sk

28 static int sock_wait_state(struct sock *sk, int state, unsigned long timeo)  in sock_wait_state()  argument
33 pr_debug("sk %p", sk); in sock_wait_state()
35 add_wait_queue(sk_sleep(sk), &wait); in sock_wait_state()
38 while (sk->sk_state != state) { in sock_wait_state()
49 release_sock(sk); in sock_wait_state()
51 lock_sock(sk); in sock_wait_state()
54 err = sock_error(sk); in sock_wait_state()
60 remove_wait_queue(sk_sleep(sk), &wait); in sock_wait_state()
72 struct sock *sk = sock->sk; in llcp_sock_bind() local
73 struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); in llcp_sock_bind()
83 pr_debug("sk %p addr %p family %d\n", sk, addr, addr->sa_family); in llcp_sock_bind()
93 lock_sock(sk); in llcp_sock_bind()
95 if (sk->sk_state != LLCP_CLOSED) { in llcp_sock_bind()
130 nfc_llcp_sock_link(&local->sockets, sk); in llcp_sock_bind()
134 sk->sk_state = LLCP_BOUND; in llcp_sock_bind()
140 release_sock(sk); in llcp_sock_bind()
147 struct sock *sk = sock->sk; in llcp_raw_sock_bind() local
148 struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); in llcp_raw_sock_bind()
158 pr_debug("sk %p addr %p family %d\n", sk, addr, addr->sa_family); in llcp_raw_sock_bind()
164 lock_sock(sk); in llcp_raw_sock_bind()
166 if (sk->sk_state != LLCP_CLOSED) { in llcp_raw_sock_bind()
187 nfc_llcp_sock_link(&local->raw_sockets, sk); in llcp_raw_sock_bind()
189 sk->sk_state = LLCP_BOUND; in llcp_raw_sock_bind()
195 release_sock(sk); in llcp_raw_sock_bind()
201 struct sock *sk = sock->sk; in llcp_sock_listen() local
204 pr_debug("sk %p backlog %d\n", sk, backlog); in llcp_sock_listen()
206 lock_sock(sk); in llcp_sock_listen()
209 sk->sk_state != LLCP_BOUND) { in llcp_sock_listen()
214 sk->sk_max_ack_backlog = backlog; in llcp_sock_listen()
215 sk->sk_ack_backlog = 0; in llcp_sock_listen()
218 sk->sk_state = LLCP_LISTEN; in llcp_sock_listen()
221 release_sock(sk); in llcp_sock_listen()
229 struct sock *sk = sock->sk; in nfc_llcp_setsockopt() local
230 struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); in nfc_llcp_setsockopt()
234 pr_debug("%p optname %d\n", sk, optname); in nfc_llcp_setsockopt()
239 lock_sock(sk); in nfc_llcp_setsockopt()
243 if (sk->sk_state == LLCP_CONNECTED || in nfc_llcp_setsockopt()
244 sk->sk_state == LLCP_BOUND || in nfc_llcp_setsockopt()
245 sk->sk_state == LLCP_LISTEN) { in nfc_llcp_setsockopt()
265 if (sk->sk_state == LLCP_CONNECTED || in nfc_llcp_setsockopt()
266 sk->sk_state == LLCP_BOUND || in nfc_llcp_setsockopt()
267 sk->sk_state == LLCP_LISTEN) { in nfc_llcp_setsockopt()
291 release_sock(sk); in nfc_llcp_setsockopt()
303 struct sock *sk = sock->sk; in nfc_llcp_getsockopt() local
304 struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); in nfc_llcp_getsockopt()
309 pr_debug("%p optname %d\n", sk, optname); in nfc_llcp_getsockopt()
323 lock_sock(sk); in nfc_llcp_getsockopt()
368 release_sock(sk); in nfc_llcp_getsockopt()
376 void nfc_llcp_accept_unlink(struct sock *sk) in nfc_llcp_accept_unlink() argument
378 struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); in nfc_llcp_accept_unlink()
380 pr_debug("state %d\n", sk->sk_state); in nfc_llcp_accept_unlink()
386 sock_put(sk); in nfc_llcp_accept_unlink()
389 void nfc_llcp_accept_enqueue(struct sock *parent, struct sock *sk) in nfc_llcp_accept_enqueue() argument
391 struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); in nfc_llcp_accept_enqueue()
395 sock_hold(sk); in nfc_llcp_accept_enqueue()
407 struct sock *sk; in nfc_llcp_accept_dequeue() local
413 sk = &lsk->sk; in nfc_llcp_accept_dequeue()
414 lock_sock(sk); in nfc_llcp_accept_dequeue()
416 if (sk->sk_state == LLCP_CLOSED) { in nfc_llcp_accept_dequeue()
417 release_sock(sk); in nfc_llcp_accept_dequeue()
418 nfc_llcp_accept_unlink(sk); in nfc_llcp_accept_dequeue()
422 if (sk->sk_state == LLCP_CONNECTED || !newsock) { in nfc_llcp_accept_dequeue()
424 sock_put(sk); in nfc_llcp_accept_dequeue()
427 sock_graft(sk, newsock); in nfc_llcp_accept_dequeue()
429 release_sock(sk); in nfc_llcp_accept_dequeue()
431 pr_debug("Returning sk state %d\n", sk->sk_state); in nfc_llcp_accept_dequeue()
435 return sk; in nfc_llcp_accept_dequeue()
438 release_sock(sk); in nfc_llcp_accept_dequeue()
448 struct sock *sk = sock->sk, *new_sk; in llcp_sock_accept() local
452 pr_debug("parent %p\n", sk); in llcp_sock_accept()
454 lock_sock_nested(sk, SINGLE_DEPTH_NESTING); in llcp_sock_accept()
456 if (sk->sk_state != LLCP_LISTEN) { in llcp_sock_accept()
461 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK); in llcp_sock_accept()
464 add_wait_queue_exclusive(sk_sleep(sk), &wait); in llcp_sock_accept()
465 while (!(new_sk = nfc_llcp_accept_dequeue(sk, newsock))) { in llcp_sock_accept()
478 release_sock(sk); in llcp_sock_accept()
480 lock_sock_nested(sk, SINGLE_DEPTH_NESTING); in llcp_sock_accept()
483 remove_wait_queue(sk_sleep(sk), &wait); in llcp_sock_accept()
493 release_sock(sk); in llcp_sock_accept()
501 struct sock *sk = sock->sk; in llcp_sock_getname() local
502 struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); in llcp_sock_getname()
508 pr_debug("%p %d %d %d\n", sk, llcp_sock->target_idx, in llcp_sock_getname()
514 lock_sock(sk); in llcp_sock_getname()
516 release_sock(sk); in llcp_sock_getname()
528 release_sock(sk); in llcp_sock_getname()
536 struct sock *sk; in llcp_accept_poll() local
542 sk = &llcp_sock->sk; in llcp_accept_poll()
544 if (sk->sk_state == LLCP_CONNECTED) in llcp_accept_poll()
554 struct sock *sk = sock->sk; in llcp_sock_poll() local
557 pr_debug("%p\n", sk); in llcp_sock_poll()
559 sock_poll_wait(file, sk_sleep(sk), wait); in llcp_sock_poll()
561 if (sk->sk_state == LLCP_LISTEN) in llcp_sock_poll()
562 return llcp_accept_poll(sk); in llcp_sock_poll()
564 if (sk->sk_err || !skb_queue_empty(&sk->sk_error_queue)) in llcp_sock_poll()
566 (sock_flag(sk, SOCK_SELECT_ERR_QUEUE) ? POLLPRI : 0); in llcp_sock_poll()
568 if (!skb_queue_empty(&sk->sk_receive_queue)) in llcp_sock_poll()
571 if (sk->sk_state == LLCP_CLOSED) in llcp_sock_poll()
574 if (sk->sk_shutdown & RCV_SHUTDOWN) in llcp_sock_poll()
577 if (sk->sk_shutdown == SHUTDOWN_MASK) in llcp_sock_poll()
580 if (sock_writeable(sk) && sk->sk_state == LLCP_CONNECTED) in llcp_sock_poll()
583 sk_set_bit(SOCKWQ_ASYNC_NOSPACE, sk); in llcp_sock_poll()
592 struct sock *sk = sock->sk; in llcp_sock_release() local
594 struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); in llcp_sock_release()
597 if (!sk) in llcp_sock_release()
600 pr_debug("%p\n", sk); in llcp_sock_release()
608 lock_sock(sk); in llcp_sock_release()
611 if (sk->sk_state == LLCP_CONNECTED) in llcp_sock_release()
614 if (sk->sk_state == LLCP_LISTEN) { in llcp_sock_release()
620 accept_sk = &lsk->sk; in llcp_sock_release()
633 release_sock(sk); in llcp_sock_release()
639 if (sk->sk_state == LLCP_DISCONNECTING) in llcp_sock_release()
643 nfc_llcp_sock_unlink(&local->raw_sockets, sk); in llcp_sock_release()
645 nfc_llcp_sock_unlink(&local->sockets, sk); in llcp_sock_release()
648 sock_orphan(sk); in llcp_sock_release()
649 sock_put(sk); in llcp_sock_release()
657 struct sock *sk = sock->sk; in llcp_sock_connect() local
658 struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); in llcp_sock_connect()
664 pr_debug("sock %p sk %p flags 0x%x\n", sock, sk, flags); in llcp_sock_connect()
675 lock_sock(sk); in llcp_sock_connect()
677 if (sk->sk_state == LLCP_CONNECTED) { in llcp_sock_connect()
730 nfc_llcp_sock_link(&local->connecting_sockets, sk); in llcp_sock_connect()
736 sk->sk_state = LLCP_CONNECTING; in llcp_sock_connect()
738 ret = sock_wait_state(sk, LLCP_CONNECTED, in llcp_sock_connect()
739 sock_sndtimeo(sk, flags & O_NONBLOCK)); in llcp_sock_connect()
743 release_sock(sk); in llcp_sock_connect()
750 nfc_llcp_sock_unlink(&local->connecting_sockets, sk); in llcp_sock_connect()
756 release_sock(sk); in llcp_sock_connect()
763 struct sock *sk = sock->sk; in llcp_sock_sendmsg() local
764 struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); in llcp_sock_sendmsg()
767 pr_debug("sock %p sk %p", sock, sk); in llcp_sock_sendmsg()
769 ret = sock_error(sk); in llcp_sock_sendmsg()
776 lock_sock(sk); in llcp_sock_sendmsg()
778 if (sk->sk_type == SOCK_DGRAM) { in llcp_sock_sendmsg()
783 release_sock(sk); in llcp_sock_sendmsg()
787 release_sock(sk); in llcp_sock_sendmsg()
793 if (sk->sk_state != LLCP_CONNECTED) { in llcp_sock_sendmsg()
794 release_sock(sk); in llcp_sock_sendmsg()
798 release_sock(sk); in llcp_sock_sendmsg()
807 struct sock *sk = sock->sk; in llcp_sock_recvmsg() local
812 pr_debug("%p %zu\n", sk, len); in llcp_sock_recvmsg()
814 lock_sock(sk); in llcp_sock_recvmsg()
816 if (sk->sk_state == LLCP_CLOSED && in llcp_sock_recvmsg()
817 skb_queue_empty(&sk->sk_receive_queue)) { in llcp_sock_recvmsg()
818 release_sock(sk); in llcp_sock_recvmsg()
822 release_sock(sk); in llcp_sock_recvmsg()
827 skb = skb_recv_datagram(sk, flags, noblock, &err); in llcp_sock_recvmsg()
830 sk->sk_state, err, sock_error(sk)); in llcp_sock_recvmsg()
832 if (sk->sk_shutdown & RCV_SHUTDOWN) in llcp_sock_recvmsg()
844 skb_queue_head(&sk->sk_receive_queue, skb); in llcp_sock_recvmsg()
848 sock_recv_timestamp(msg, sk, skb); in llcp_sock_recvmsg()
850 if (sk->sk_type == SOCK_DGRAM && msg->msg_name) { in llcp_sock_recvmsg()
870 if (sk->sk_type == SOCK_STREAM || in llcp_sock_recvmsg()
871 sk->sk_type == SOCK_DGRAM || in llcp_sock_recvmsg()
872 sk->sk_type == SOCK_RAW) { in llcp_sock_recvmsg()
875 skb_queue_head(&sk->sk_receive_queue, skb); in llcp_sock_recvmsg()
887 if (sk->sk_type == SOCK_SEQPACKET && (flags & MSG_TRUNC)) in llcp_sock_recvmsg()
933 static void llcp_sock_destruct(struct sock *sk) in llcp_sock_destruct() argument
935 struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); in llcp_sock_destruct()
937 pr_debug("%p\n", sk); in llcp_sock_destruct()
939 if (sk->sk_state == LLCP_CONNECTED) in llcp_sock_destruct()
942 skb_queue_purge(&sk->sk_receive_queue); in llcp_sock_destruct()
946 if (!sock_flag(sk, SOCK_DEAD)) { in llcp_sock_destruct()
947 pr_err("Freeing alive NFC LLCP socket %p\n", sk); in llcp_sock_destruct()
954 struct sock *sk; in nfc_llcp_sock_alloc() local
957 sk = sk_alloc(&init_net, PF_NFC, gfp, &llcp_sock_proto, kern); in nfc_llcp_sock_alloc()
958 if (!sk) in nfc_llcp_sock_alloc()
961 llcp_sock = nfc_llcp_sock(sk); in nfc_llcp_sock_alloc()
963 sock_init_data(sock, sk); in nfc_llcp_sock_alloc()
964 sk->sk_state = LLCP_CLOSED; in nfc_llcp_sock_alloc()
965 sk->sk_protocol = NFC_SOCKPROTO_LLCP; in nfc_llcp_sock_alloc()
966 sk->sk_type = type; in nfc_llcp_sock_alloc()
967 sk->sk_destruct = llcp_sock_destruct; in nfc_llcp_sock_alloc()
985 return sk; in nfc_llcp_sock_alloc()
1005 struct sock *sk; in llcp_sock_create() local
1019 sk = nfc_llcp_sock_alloc(sock, sock->type, GFP_ATOMIC, kern); in llcp_sock_create()
1020 if (sk == NULL) in llcp_sock_create()