Lines Matching refs:sk
102 static int __vsock_bind(struct sock *sk, struct sockaddr_vm *addr);
103 static void vsock_sk_destruct(struct sock *sk);
104 static int vsock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);
169 struct sock *sk = sk_vsock(vsk); in vsock_auto_bind() local
175 return __vsock_bind(sk, &local_addr); in vsock_auto_bind()
192 sock_hold(&vsk->sk); in __vsock_insert_bound()
199 sock_hold(&vsk->sk); in __vsock_insert_connected()
206 sock_put(&vsk->sk); in __vsock_remove_bound()
212 sock_put(&vsk->sk); in __vsock_remove_connected()
288 struct sock *sk; in vsock_find_bound_socket() local
291 sk = __vsock_find_bound_socket(addr); in vsock_find_bound_socket()
292 if (sk) in vsock_find_bound_socket()
293 sock_hold(sk); in vsock_find_bound_socket()
297 return sk; in vsock_find_bound_socket()
304 struct sock *sk; in vsock_find_connected_socket() local
307 sk = __vsock_find_connected_socket(src, dst); in vsock_find_connected_socket()
308 if (sk) in vsock_find_connected_socket()
309 sock_hold(sk); in vsock_find_connected_socket()
313 return sk; in vsock_find_connected_socket()
339 void vsock_for_each_connected_socket(void (*fn)(struct sock *sk)) in vsock_for_each_connected_socket() argument
416 static bool vsock_is_accept_queue_empty(struct sock *sk) in vsock_is_accept_queue_empty() argument
418 struct vsock_sock *vsk = vsock_sk(sk); in vsock_is_accept_queue_empty()
422 static bool vsock_is_pending(struct sock *sk) in vsock_is_pending() argument
424 struct vsock_sock *vsk = vsock_sk(sk); in vsock_is_pending()
428 static int vsock_send_shutdown(struct sock *sk, int mode) in vsock_send_shutdown() argument
430 return transport->shutdown(vsock_sk(sk), mode); in vsock_send_shutdown()
435 struct sock *sk; in vsock_pending_work() local
441 sk = sk_vsock(vsk); in vsock_pending_work()
446 lock_sock(sk); in vsock_pending_work()
448 if (vsock_is_pending(sk)) { in vsock_pending_work()
449 vsock_remove_pending(listener, sk); in vsock_pending_work()
469 sk->sk_state = SS_FREE; in vsock_pending_work()
472 release_sock(sk); in vsock_pending_work()
475 sock_put(sk); in vsock_pending_work()
477 sock_put(sk); in vsock_pending_work()
541 static int __vsock_bind(struct sock *sk, struct sockaddr_vm *addr) in __vsock_bind() argument
543 struct vsock_sock *vsk = vsock_sk(sk); in __vsock_bind()
560 switch (sk->sk_socket->type) { in __vsock_bind()
586 struct sock *sk; in __vsock_create() local
590 sk = sk_alloc(net, AF_VSOCK, priority, &vsock_proto, kern); in __vsock_create()
591 if (!sk) in __vsock_create()
594 sock_init_data(sock, sk); in __vsock_create()
601 sk->sk_type = type; in __vsock_create()
603 vsk = vsock_sk(sk); in __vsock_create()
607 sk->sk_destruct = vsock_sk_destruct; in __vsock_create()
608 sk->sk_backlog_rcv = vsock_queue_rcv_skb; in __vsock_create()
609 sk->sk_state = 0; in __vsock_create()
610 sock_reset_flag(sk, SOCK_DONE); in __vsock_create()
634 sk_free(sk); in __vsock_create()
641 return sk; in __vsock_create()
645 static void __vsock_release(struct sock *sk) in __vsock_release() argument
647 if (sk) { in __vsock_release()
652 vsk = vsock_sk(sk); in __vsock_release()
663 lock_sock(sk); in __vsock_release()
664 sock_orphan(sk); in __vsock_release()
665 sk->sk_shutdown = SHUTDOWN_MASK; in __vsock_release()
667 while ((skb = skb_dequeue(&sk->sk_receive_queue))) in __vsock_release()
671 while ((pending = vsock_dequeue_accept(sk)) != NULL) { in __vsock_release()
676 release_sock(sk); in __vsock_release()
677 sock_put(sk); in __vsock_release()
681 static void vsock_sk_destruct(struct sock *sk) in vsock_sk_destruct() argument
683 struct vsock_sock *vsk = vsock_sk(sk); in vsock_sk_destruct()
696 static int vsock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) in vsock_queue_rcv_skb() argument
700 err = sock_queue_rcv_skb(sk, skb); in vsock_queue_rcv_skb()
721 __vsock_release(sock->sk); in vsock_release()
722 sock->sk = NULL; in vsock_release()
732 struct sock *sk; in vsock_bind() local
735 sk = sock->sk; in vsock_bind()
740 lock_sock(sk); in vsock_bind()
741 err = __vsock_bind(sk, vm_addr); in vsock_bind()
742 release_sock(sk); in vsock_bind()
751 struct sock *sk; in vsock_getname() local
755 sk = sock->sk; in vsock_getname()
756 vsk = vsock_sk(sk); in vsock_getname()
759 lock_sock(sk); in vsock_getname()
786 release_sock(sk); in vsock_getname()
793 struct sock *sk; in vsock_shutdown() local
812 sk = sock->sk; in vsock_shutdown()
815 if (sk->sk_type == SOCK_STREAM) in vsock_shutdown()
825 lock_sock(sk); in vsock_shutdown()
826 sk->sk_shutdown |= mode; in vsock_shutdown()
827 sk->sk_state_change(sk); in vsock_shutdown()
828 release_sock(sk); in vsock_shutdown()
830 if (sk->sk_type == SOCK_STREAM) { in vsock_shutdown()
831 sock_reset_flag(sk, SOCK_DONE); in vsock_shutdown()
832 vsock_send_shutdown(sk, mode); in vsock_shutdown()
842 struct sock *sk; in vsock_poll() local
846 sk = sock->sk; in vsock_poll()
847 vsk = vsock_sk(sk); in vsock_poll()
849 poll_wait(file, sk_sleep(sk), wait); in vsock_poll()
852 if (sk->sk_err) in vsock_poll()
859 if ((sk->sk_shutdown == SHUTDOWN_MASK) || in vsock_poll()
860 ((sk->sk_shutdown & SEND_SHUTDOWN) && in vsock_poll()
865 if (sk->sk_shutdown & RCV_SHUTDOWN || in vsock_poll()
875 if (!skb_queue_empty(&sk->sk_receive_queue) || in vsock_poll()
876 (sk->sk_shutdown & RCV_SHUTDOWN)) { in vsock_poll()
880 if (!(sk->sk_shutdown & SEND_SHUTDOWN)) in vsock_poll()
884 lock_sock(sk); in vsock_poll()
889 if (sk->sk_state == VSOCK_SS_LISTEN in vsock_poll()
890 && !vsock_is_accept_queue_empty(sk)) in vsock_poll()
895 !(sk->sk_shutdown & RCV_SHUTDOWN)) { in vsock_poll()
912 if (sk->sk_shutdown & RCV_SHUTDOWN || in vsock_poll()
918 if (sk->sk_state == SS_CONNECTED) { in vsock_poll()
919 if (!(sk->sk_shutdown & SEND_SHUTDOWN)) { in vsock_poll()
940 if (sk->sk_state == SS_UNCONNECTED) { in vsock_poll()
941 if (!(sk->sk_shutdown & SEND_SHUTDOWN)) in vsock_poll()
946 release_sock(sk); in vsock_poll()
956 struct sock *sk; in vsock_dgram_sendmsg() local
965 sk = sock->sk; in vsock_dgram_sendmsg()
966 vsk = vsock_sk(sk); in vsock_dgram_sendmsg()
968 lock_sock(sk); in vsock_dgram_sendmsg()
1019 release_sock(sk); in vsock_dgram_sendmsg()
1027 struct sock *sk; in vsock_dgram_connect() local
1031 sk = sock->sk; in vsock_dgram_connect()
1032 vsk = vsock_sk(sk); in vsock_dgram_connect()
1036 lock_sock(sk); in vsock_dgram_connect()
1040 release_sock(sk); in vsock_dgram_connect()
1045 lock_sock(sk); in vsock_dgram_connect()
1061 release_sock(sk); in vsock_dgram_connect()
1068 return transport->dgram_dequeue(vsock_sk(sock->sk), msg, len, flags); in vsock_dgram_recvmsg()
1094 struct sock *sk; in vsock_connect_timeout() local
1098 sk = sk_vsock(vsk); in vsock_connect_timeout()
1100 lock_sock(sk); in vsock_connect_timeout()
1101 if (sk->sk_state == SS_CONNECTING && in vsock_connect_timeout()
1102 (sk->sk_shutdown != SHUTDOWN_MASK)) { in vsock_connect_timeout()
1103 sk->sk_state = SS_UNCONNECTED; in vsock_connect_timeout()
1104 sk->sk_err = ETIMEDOUT; in vsock_connect_timeout()
1105 sk->sk_error_report(sk); in vsock_connect_timeout()
1107 release_sock(sk); in vsock_connect_timeout()
1109 sock_put(sk); in vsock_connect_timeout()
1116 struct sock *sk; in vsock_stream_connect() local
1123 sk = sock->sk; in vsock_stream_connect()
1124 vsk = vsock_sk(sk); in vsock_stream_connect()
1126 lock_sock(sk); in vsock_stream_connect()
1146 if ((sk->sk_state == VSOCK_SS_LISTEN) || in vsock_stream_connect()
1169 sk->sk_state = SS_CONNECTING; in vsock_stream_connect()
1187 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in vsock_stream_connect()
1189 while (sk->sk_state != SS_CONNECTED && sk->sk_err == 0) { in vsock_stream_connect()
1197 sock_hold(sk); in vsock_stream_connect()
1206 release_sock(sk); in vsock_stream_connect()
1208 lock_sock(sk); in vsock_stream_connect()
1218 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in vsock_stream_connect()
1221 if (sk->sk_err) { in vsock_stream_connect()
1222 err = -sk->sk_err; in vsock_stream_connect()
1228 finish_wait(sk_sleep(sk), &wait); in vsock_stream_connect()
1230 release_sock(sk); in vsock_stream_connect()
1234 sk->sk_state = SS_UNCONNECTED; in vsock_stream_connect()
1249 listener = sock->sk; in vsock_accept()
1325 struct sock *sk; in vsock_listen() local
1328 sk = sock->sk; in vsock_listen()
1330 lock_sock(sk); in vsock_listen()
1342 vsk = vsock_sk(sk); in vsock_listen()
1349 sk->sk_max_ack_backlog = backlog; in vsock_listen()
1350 sk->sk_state = VSOCK_SS_LISTEN; in vsock_listen()
1355 release_sock(sk); in vsock_listen()
1366 struct sock *sk; in vsock_stream_setsockopt() local
1386 sk = sock->sk; in vsock_stream_setsockopt()
1387 vsk = vsock_sk(sk); in vsock_stream_setsockopt()
1389 lock_sock(sk); in vsock_stream_setsockopt()
1432 release_sock(sk); in vsock_stream_setsockopt()
1443 struct sock *sk; in vsock_stream_getsockopt() local
1466 sk = sock->sk; in vsock_stream_getsockopt()
1467 vsk = vsock_sk(sk); in vsock_stream_getsockopt()
1510 struct sock *sk; in vsock_stream_sendmsg() local
1519 sk = sock->sk; in vsock_stream_sendmsg()
1520 vsk = vsock_sk(sk); in vsock_stream_sendmsg()
1527 lock_sock(sk); in vsock_stream_sendmsg()
1531 err = sk->sk_state == SS_CONNECTED ? -EISCONN : -EOPNOTSUPP; in vsock_stream_sendmsg()
1536 if (sk->sk_shutdown & SEND_SHUTDOWN || in vsock_stream_sendmsg()
1542 if (sk->sk_state != SS_CONNECTED || in vsock_stream_sendmsg()
1554 timeout = sock_sndtimeo(sk, msg->msg_flags & MSG_DONTWAIT); in vsock_stream_sendmsg()
1560 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in vsock_stream_sendmsg()
1566 sk->sk_err == 0 && in vsock_stream_sendmsg()
1567 !(sk->sk_shutdown & SEND_SHUTDOWN) && in vsock_stream_sendmsg()
1580 release_sock(sk); in vsock_stream_sendmsg()
1582 lock_sock(sk); in vsock_stream_sendmsg()
1591 prepare_to_wait(sk_sleep(sk), &wait, in vsock_stream_sendmsg()
1599 if (sk->sk_err) { in vsock_stream_sendmsg()
1600 err = -sk->sk_err; in vsock_stream_sendmsg()
1602 } else if ((sk->sk_shutdown & SEND_SHUTDOWN) || in vsock_stream_sendmsg()
1638 finish_wait(sk_sleep(sk), &wait); in vsock_stream_sendmsg()
1640 release_sock(sk); in vsock_stream_sendmsg()
1649 struct sock *sk; in vsock_stream_recvmsg() local
1659 sk = sock->sk; in vsock_stream_recvmsg()
1660 vsk = vsock_sk(sk); in vsock_stream_recvmsg()
1663 lock_sock(sk); in vsock_stream_recvmsg()
1665 if (sk->sk_state != SS_CONNECTED) { in vsock_stream_recvmsg()
1671 if (sock_flag(sk, SOCK_DONE)) in vsock_stream_recvmsg()
1688 if (sk->sk_shutdown & RCV_SHUTDOWN) { in vsock_stream_recvmsg()
1707 target = sock_rcvlowat(sk, flags & MSG_WAITALL, len); in vsock_stream_recvmsg()
1712 timeout = sock_rcvtimeo(sk, flags & MSG_DONTWAIT); in vsock_stream_recvmsg()
1719 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in vsock_stream_recvmsg()
1760 if (sk->sk_err != 0 || (sk->sk_shutdown & RCV_SHUTDOWN) in vsock_stream_recvmsg()
1775 release_sock(sk); in vsock_stream_recvmsg()
1777 lock_sock(sk); in vsock_stream_recvmsg()
1787 prepare_to_wait(sk_sleep(sk), &wait, in vsock_stream_recvmsg()
1792 if (sk->sk_err) in vsock_stream_recvmsg()
1793 err = -sk->sk_err; in vsock_stream_recvmsg()
1794 else if (sk->sk_shutdown & RCV_SHUTDOWN) in vsock_stream_recvmsg()
1801 finish_wait(sk_sleep(sk), &wait); in vsock_stream_recvmsg()
1803 release_sock(sk); in vsock_stream_recvmsg()