• Home
  • Raw
  • Download

Lines Matching refs:vsk

170 #define vsock_connected_sockets_vsk(vsk)				\  argument
171 vsock_connected_sockets(&(vsk)->remote_addr, &(vsk)->local_addr)
181 static int vsock_auto_bind(struct vsock_sock *vsk) in vsock_auto_bind() argument
183 struct sock *sk = sk_vsock(vsk); in vsock_auto_bind()
186 if (vsock_addr_bound(&vsk->local_addr)) in vsock_auto_bind()
204 struct vsock_sock *vsk) in __vsock_insert_bound() argument
206 sock_hold(&vsk->sk); in __vsock_insert_bound()
207 list_add(&vsk->bound_table, list); in __vsock_insert_bound()
211 struct vsock_sock *vsk) in __vsock_insert_connected() argument
213 sock_hold(&vsk->sk); in __vsock_insert_connected()
214 list_add(&vsk->connected_table, list); in __vsock_insert_connected()
217 static void __vsock_remove_bound(struct vsock_sock *vsk) in __vsock_remove_bound() argument
219 list_del_init(&vsk->bound_table); in __vsock_remove_bound()
220 sock_put(&vsk->sk); in __vsock_remove_bound()
223 static void __vsock_remove_connected(struct vsock_sock *vsk) in __vsock_remove_connected() argument
225 list_del_init(&vsk->connected_table); in __vsock_remove_connected()
226 sock_put(&vsk->sk); in __vsock_remove_connected()
231 struct vsock_sock *vsk; in __vsock_find_bound_socket() local
233 list_for_each_entry(vsk, vsock_bound_sockets(addr), bound_table) { in __vsock_find_bound_socket()
234 if (vsock_addr_equals_addr(addr, &vsk->local_addr)) in __vsock_find_bound_socket()
235 return sk_vsock(vsk); in __vsock_find_bound_socket()
237 if (addr->svm_port == vsk->local_addr.svm_port && in __vsock_find_bound_socket()
238 (vsk->local_addr.svm_cid == VMADDR_CID_ANY || in __vsock_find_bound_socket()
240 return sk_vsock(vsk); in __vsock_find_bound_socket()
249 struct vsock_sock *vsk; in __vsock_find_connected_socket() local
251 list_for_each_entry(vsk, vsock_connected_sockets(src, dst), in __vsock_find_connected_socket()
253 if (vsock_addr_equals_addr(src, &vsk->remote_addr) && in __vsock_find_connected_socket()
254 dst->svm_port == vsk->local_addr.svm_port) { in __vsock_find_connected_socket()
255 return sk_vsock(vsk); in __vsock_find_connected_socket()
262 static void vsock_insert_unbound(struct vsock_sock *vsk) in vsock_insert_unbound() argument
265 __vsock_insert_bound(vsock_unbound_sockets, vsk); in vsock_insert_unbound()
269 void vsock_insert_connected(struct vsock_sock *vsk) in vsock_insert_connected() argument
272 &vsk->remote_addr, &vsk->local_addr); in vsock_insert_connected()
275 __vsock_insert_connected(list, vsk); in vsock_insert_connected()
280 void vsock_remove_bound(struct vsock_sock *vsk) in vsock_remove_bound() argument
283 if (__vsock_in_bound_table(vsk)) in vsock_remove_bound()
284 __vsock_remove_bound(vsk); in vsock_remove_bound()
289 void vsock_remove_connected(struct vsock_sock *vsk) in vsock_remove_connected() argument
292 if (__vsock_in_connected_table(vsk)) in vsock_remove_connected()
293 __vsock_remove_connected(vsk); in vsock_remove_connected()
329 void vsock_remove_sock(struct vsock_sock *vsk) in vsock_remove_sock() argument
331 vsock_remove_bound(vsk); in vsock_remove_sock()
332 vsock_remove_connected(vsk); in vsock_remove_sock()
344 struct vsock_sock *vsk; in vsock_for_each_connected_socket() local
345 list_for_each_entry(vsk, &vsock_connected_table[i], in vsock_for_each_connected_socket()
347 if (vsk->transport != transport) in vsock_for_each_connected_socket()
350 fn(sk_vsock(vsk)); in vsock_for_each_connected_socket()
411 static void vsock_deassign_transport(struct vsock_sock *vsk) in vsock_deassign_transport() argument
413 if (!vsk->transport) in vsock_deassign_transport()
416 vsk->transport->destruct(vsk); in vsock_deassign_transport()
417 module_put(vsk->transport->module); in vsock_deassign_transport()
418 vsk->transport = NULL; in vsock_deassign_transport()
432 int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk) in vsock_assign_transport() argument
435 struct sock *sk = sk_vsock(vsk); in vsock_assign_transport()
436 unsigned int remote_cid = vsk->remote_addr.svm_cid; in vsock_assign_transport()
455 if (vsk->transport) { in vsock_assign_transport()
456 if (vsk->transport == new_transport) in vsock_assign_transport()
465 vsk->transport->release(vsk); in vsock_assign_transport()
466 vsock_deassign_transport(vsk); in vsock_assign_transport()
475 ret = new_transport->init(vsk, psk); in vsock_assign_transport()
481 vsk->transport = new_transport; in vsock_assign_transport()
526 struct vsock_sock *vsk = vsock_sk(sk); in vsock_is_accept_queue_empty() local
527 return list_empty(&vsk->accept_queue); in vsock_is_accept_queue_empty()
532 struct vsock_sock *vsk = vsock_sk(sk); in vsock_is_pending() local
533 return !list_empty(&vsk->pending_links); in vsock_is_pending()
538 struct vsock_sock *vsk = vsock_sk(sk); in vsock_send_shutdown() local
540 if (!vsk->transport) in vsock_send_shutdown()
543 return vsk->transport->shutdown(vsk, mode); in vsock_send_shutdown()
550 struct vsock_sock *vsk; in vsock_pending_work() local
553 vsk = container_of(work, struct vsock_sock, pending_work.work); in vsock_pending_work()
554 sk = sk_vsock(vsk); in vsock_pending_work()
555 listener = vsk->listener; in vsock_pending_work()
565 } else if (!vsk->rejected) { in vsock_pending_work()
579 vsock_remove_connected(vsk); in vsock_pending_work()
595 static int __vsock_bind_stream(struct vsock_sock *vsk, in __vsock_bind_stream() argument
638 vsock_addr_init(&vsk->local_addr, new_addr.svm_cid, new_addr.svm_port); in __vsock_bind_stream()
644 __vsock_remove_bound(vsk); in __vsock_bind_stream()
645 __vsock_insert_bound(vsock_bound_sockets(&vsk->local_addr), vsk); in __vsock_bind_stream()
650 static int __vsock_bind_dgram(struct vsock_sock *vsk, in __vsock_bind_dgram() argument
653 return vsk->transport->dgram_bind(vsk, addr); in __vsock_bind_dgram()
658 struct vsock_sock *vsk = vsock_sk(sk); in __vsock_bind() local
662 if (vsock_addr_bound(&vsk->local_addr)) in __vsock_bind()
676 retval = __vsock_bind_stream(vsk, addr); in __vsock_bind()
681 retval = __vsock_bind_dgram(vsk, addr); in __vsock_bind()
703 struct vsock_sock *vsk; in __vsock_create() local
718 vsk = vsock_sk(sk); in __vsock_create()
719 vsock_addr_init(&vsk->local_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in __vsock_create()
720 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in __vsock_create()
726 INIT_LIST_HEAD(&vsk->bound_table); in __vsock_create()
727 INIT_LIST_HEAD(&vsk->connected_table); in __vsock_create()
728 vsk->listener = NULL; in __vsock_create()
729 INIT_LIST_HEAD(&vsk->pending_links); in __vsock_create()
730 INIT_LIST_HEAD(&vsk->accept_queue); in __vsock_create()
731 vsk->rejected = false; in __vsock_create()
732 vsk->sent_request = false; in __vsock_create()
733 vsk->ignore_connecting_rst = false; in __vsock_create()
734 vsk->peer_shutdown = 0; in __vsock_create()
735 INIT_DELAYED_WORK(&vsk->connect_work, vsock_connect_timeout); in __vsock_create()
736 INIT_DELAYED_WORK(&vsk->pending_work, vsock_pending_work); in __vsock_create()
740 vsk->trusted = psk->trusted; in __vsock_create()
741 vsk->owner = get_cred(psk->owner); in __vsock_create()
742 vsk->connect_timeout = psk->connect_timeout; in __vsock_create()
743 vsk->buffer_size = psk->buffer_size; in __vsock_create()
744 vsk->buffer_min_size = psk->buffer_min_size; in __vsock_create()
745 vsk->buffer_max_size = psk->buffer_max_size; in __vsock_create()
748 vsk->trusted = ns_capable_noaudit(&init_user_ns, CAP_NET_ADMIN); in __vsock_create()
749 vsk->owner = get_current_cred(); in __vsock_create()
750 vsk->connect_timeout = VSOCK_DEFAULT_CONNECT_TIMEOUT; in __vsock_create()
751 vsk->buffer_size = VSOCK_DEFAULT_BUFFER_SIZE; in __vsock_create()
752 vsk->buffer_min_size = VSOCK_DEFAULT_BUFFER_MIN_SIZE; in __vsock_create()
753 vsk->buffer_max_size = VSOCK_DEFAULT_BUFFER_MAX_SIZE; in __vsock_create()
763 struct vsock_sock *vsk; in __vsock_release() local
765 vsk = vsock_sk(sk); in __vsock_release()
775 if (vsk->transport) in __vsock_release()
776 vsk->transport->release(vsk); in __vsock_release()
778 vsock_remove_sock(vsk); in __vsock_release()
798 struct vsock_sock *vsk = vsock_sk(sk); in vsock_sk_destruct() local
800 vsock_deassign_transport(vsk); in vsock_sk_destruct()
805 vsock_addr_init(&vsk->local_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in vsock_sk_destruct()
806 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in vsock_sk_destruct()
808 put_cred(vsk->owner); in vsock_sk_destruct()
829 s64 vsock_stream_has_data(struct vsock_sock *vsk) in vsock_stream_has_data() argument
831 return vsk->transport->stream_has_data(vsk); in vsock_stream_has_data()
835 s64 vsock_stream_has_space(struct vsock_sock *vsk) in vsock_stream_has_space() argument
837 return vsk->transport->stream_has_space(vsk); in vsock_stream_has_space()
874 struct vsock_sock *vsk; in vsock_getname() local
878 vsk = vsock_sk(sk); in vsock_getname()
888 vm_addr = &vsk->remote_addr; in vsock_getname()
890 vm_addr = &vsk->local_addr; in vsock_getname()
968 struct vsock_sock *vsk; in vsock_poll() local
971 vsk = vsock_sk(sk); in vsock_poll()
985 (vsk->peer_shutdown & SEND_SHUTDOWN))) { in vsock_poll()
990 vsk->peer_shutdown & SEND_SHUTDOWN) { in vsock_poll()
1012 transport = vsk->transport; in vsock_poll()
1022 if (transport && transport->stream_is_active(vsk) && in vsock_poll()
1026 vsk, 1, &data_ready_now); in vsock_poll()
1041 vsk->peer_shutdown & SEND_SHUTDOWN) { in vsock_poll()
1050 vsk, 1, &space_avail_now); in vsock_poll()
1085 struct vsock_sock *vsk; in vsock_dgram_sendmsg() local
1095 vsk = vsock_sk(sk); in vsock_dgram_sendmsg()
1099 transport = vsk->transport; in vsock_dgram_sendmsg()
1101 err = vsock_auto_bind(vsk); in vsock_dgram_sendmsg()
1124 remote_addr = &vsk->remote_addr; in vsock_dgram_sendmsg()
1132 if (!vsock_addr_bound(&vsk->remote_addr)) { in vsock_dgram_sendmsg()
1147 err = transport->dgram_enqueue(vsk, remote_addr, msg, len); in vsock_dgram_sendmsg()
1159 struct vsock_sock *vsk; in vsock_dgram_connect() local
1163 vsk = vsock_sk(sk); in vsock_dgram_connect()
1168 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, in vsock_dgram_connect()
1178 err = vsock_auto_bind(vsk); in vsock_dgram_connect()
1182 if (!vsk->transport->dgram_allow(remote_addr->svm_cid, in vsock_dgram_connect()
1188 memcpy(&vsk->remote_addr, remote_addr, sizeof(vsk->remote_addr)); in vsock_dgram_connect()
1199 struct vsock_sock *vsk = vsock_sk(sock->sk); in vsock_dgram_recvmsg() local
1201 return vsk->transport->dgram_dequeue(vsk, msg, len, flags); in vsock_dgram_recvmsg()
1223 static int vsock_transport_cancel_pkt(struct vsock_sock *vsk) in vsock_transport_cancel_pkt() argument
1225 const struct vsock_transport *transport = vsk->transport; in vsock_transport_cancel_pkt()
1230 return transport->cancel_pkt(vsk); in vsock_transport_cancel_pkt()
1236 struct vsock_sock *vsk; in vsock_connect_timeout() local
1238 vsk = container_of(work, struct vsock_sock, connect_work.work); in vsock_connect_timeout()
1239 sk = sk_vsock(vsk); in vsock_connect_timeout()
1248 vsock_transport_cancel_pkt(vsk); in vsock_connect_timeout()
1260 struct vsock_sock *vsk; in vsock_stream_connect() local
1268 vsk = vsock_sk(sk); in vsock_stream_connect()
1299 memcpy(&vsk->remote_addr, remote_addr, in vsock_stream_connect()
1300 sizeof(vsk->remote_addr)); in vsock_stream_connect()
1302 err = vsock_assign_transport(vsk, NULL); in vsock_stream_connect()
1306 transport = vsk->transport; in vsock_stream_connect()
1318 err = vsock_auto_bind(vsk); in vsock_stream_connect()
1324 err = transport->connect(vsk); in vsock_stream_connect()
1339 timeout = vsk->connect_timeout; in vsock_stream_connect()
1356 if (mod_delayed_work(system_wq, &vsk->connect_work, in vsock_stream_connect()
1372 vsock_transport_cancel_pkt(vsk); in vsock_stream_connect()
1373 vsock_remove_connected(vsk); in vsock_stream_connect()
1379 vsock_transport_cancel_pkt(vsk); in vsock_stream_connect()
1487 struct vsock_sock *vsk; in vsock_listen() local
1503 vsk = vsock_sk(sk); in vsock_listen()
1505 if (!vsock_addr_bound(&vsk->local_addr)) { in vsock_listen()
1520 static void vsock_update_buffer_size(struct vsock_sock *vsk, in vsock_update_buffer_size() argument
1524 if (val > vsk->buffer_max_size) in vsock_update_buffer_size()
1525 val = vsk->buffer_max_size; in vsock_update_buffer_size()
1527 if (val < vsk->buffer_min_size) in vsock_update_buffer_size()
1528 val = vsk->buffer_min_size; in vsock_update_buffer_size()
1530 if (val != vsk->buffer_size && in vsock_update_buffer_size()
1532 transport->notify_buffer_size(vsk, &val); in vsock_update_buffer_size()
1534 vsk->buffer_size = val; in vsock_update_buffer_size()
1545 struct vsock_sock *vsk; in vsock_stream_setsockopt() local
1566 vsk = vsock_sk(sk); in vsock_stream_setsockopt()
1570 transport = vsk->transport; in vsock_stream_setsockopt()
1575 vsock_update_buffer_size(vsk, transport, val); in vsock_stream_setsockopt()
1580 vsk->buffer_max_size = val; in vsock_stream_setsockopt()
1581 vsock_update_buffer_size(vsk, transport, vsk->buffer_size); in vsock_stream_setsockopt()
1586 vsk->buffer_min_size = val; in vsock_stream_setsockopt()
1587 vsock_update_buffer_size(vsk, transport, vsk->buffer_size); in vsock_stream_setsockopt()
1595 vsk->connect_timeout = tv.tv_sec * HZ + in vsock_stream_setsockopt()
1597 if (vsk->connect_timeout == 0) in vsock_stream_setsockopt()
1598 vsk->connect_timeout = in vsock_stream_setsockopt()
1627 struct vsock_sock *vsk; in vsock_stream_getsockopt() local
1650 vsk = vsock_sk(sk); in vsock_stream_getsockopt()
1654 val = vsk->buffer_size; in vsock_stream_getsockopt()
1659 val = vsk->buffer_max_size; in vsock_stream_getsockopt()
1664 val = vsk->buffer_min_size; in vsock_stream_getsockopt()
1670 tv.tv_sec = vsk->connect_timeout / HZ; in vsock_stream_getsockopt()
1672 (vsk->connect_timeout - in vsock_stream_getsockopt()
1694 struct vsock_sock *vsk; in vsock_stream_sendmsg() local
1703 vsk = vsock_sk(sk); in vsock_stream_sendmsg()
1712 transport = vsk->transport; in vsock_stream_sendmsg()
1722 vsk->peer_shutdown & RCV_SHUTDOWN) { in vsock_stream_sendmsg()
1728 !vsock_addr_bound(&vsk->local_addr)) { in vsock_stream_sendmsg()
1733 if (!vsock_addr_bound(&vsk->remote_addr)) { in vsock_stream_sendmsg()
1741 err = transport->notify_send_init(vsk, &send_data); in vsock_stream_sendmsg()
1749 while (vsock_stream_has_space(vsk) == 0 && in vsock_stream_sendmsg()
1752 !(vsk->peer_shutdown & RCV_SHUTDOWN)) { in vsock_stream_sendmsg()
1761 err = transport->notify_send_pre_block(vsk, &send_data); in vsock_stream_sendmsg()
1790 (vsk->peer_shutdown & RCV_SHUTDOWN)) { in vsock_stream_sendmsg()
1795 err = transport->notify_send_pre_enqueue(vsk, &send_data); in vsock_stream_sendmsg()
1806 vsk, msg, in vsock_stream_sendmsg()
1816 vsk, written, &send_data); in vsock_stream_sendmsg()
1836 struct vsock_sock *vsk; in vsock_stream_recvmsg() local
1847 vsk = vsock_sk(sk); in vsock_stream_recvmsg()
1852 transport = vsk->transport; in vsock_stream_recvmsg()
1897 if (target >= transport->stream_rcvhiwat(vsk)) { in vsock_stream_recvmsg()
1904 err = transport->notify_recv_init(vsk, target, &recv_data); in vsock_stream_recvmsg()
1913 ready = vsock_stream_has_data(vsk); in vsock_stream_recvmsg()
1918 (vsk->peer_shutdown & SEND_SHUTDOWN)) { in vsock_stream_recvmsg()
1930 vsk, target, &recv_data); in vsock_stream_recvmsg()
1964 vsk, target, &recv_data); in vsock_stream_recvmsg()
1969 vsk, msg, in vsock_stream_recvmsg()
1979 vsk, target, read, in vsock_stream_recvmsg()
2028 struct vsock_sock *vsk; in vsock_create() local
2055 vsk = vsock_sk(sk); in vsock_create()
2058 ret = vsock_assign_transport(vsk, NULL); in vsock_create()
2065 vsock_insert_unbound(vsk); in vsock_create()
2177 const struct vsock_transport *vsock_core_get_transport(struct vsock_sock *vsk) in vsock_core_get_transport() argument
2179 return vsk->transport; in vsock_core_get_transport()