Lines Matching refs:vsk

176 #define vsock_connected_sockets_vsk(vsk)				\  argument
177 vsock_connected_sockets(&(vsk)->remote_addr, &(vsk)->local_addr)
187 static int vsock_auto_bind(struct vsock_sock *vsk) in vsock_auto_bind() argument
189 struct sock *sk = sk_vsock(vsk); in vsock_auto_bind()
192 if (vsock_addr_bound(&vsk->local_addr)) in vsock_auto_bind()
210 struct vsock_sock *vsk) in __vsock_insert_bound() argument
212 sock_hold(&vsk->sk); in __vsock_insert_bound()
213 list_add(&vsk->bound_table, list); in __vsock_insert_bound()
217 struct vsock_sock *vsk) in __vsock_insert_connected() argument
219 sock_hold(&vsk->sk); in __vsock_insert_connected()
220 list_add(&vsk->connected_table, list); in __vsock_insert_connected()
223 static void __vsock_remove_bound(struct vsock_sock *vsk) in __vsock_remove_bound() argument
225 list_del_init(&vsk->bound_table); in __vsock_remove_bound()
226 sock_put(&vsk->sk); in __vsock_remove_bound()
229 static void __vsock_remove_connected(struct vsock_sock *vsk) in __vsock_remove_connected() argument
231 list_del_init(&vsk->connected_table); in __vsock_remove_connected()
232 sock_put(&vsk->sk); in __vsock_remove_connected()
237 struct vsock_sock *vsk; in __vsock_find_bound_socket() local
239 list_for_each_entry(vsk, vsock_bound_sockets(addr), bound_table) { in __vsock_find_bound_socket()
240 if (vsock_addr_equals_addr(addr, &vsk->local_addr)) in __vsock_find_bound_socket()
241 return sk_vsock(vsk); in __vsock_find_bound_socket()
243 if (addr->svm_port == vsk->local_addr.svm_port && in __vsock_find_bound_socket()
244 (vsk->local_addr.svm_cid == VMADDR_CID_ANY || in __vsock_find_bound_socket()
246 return sk_vsock(vsk); in __vsock_find_bound_socket()
255 struct vsock_sock *vsk; in __vsock_find_connected_socket() local
257 list_for_each_entry(vsk, vsock_connected_sockets(src, dst), in __vsock_find_connected_socket()
259 if (vsock_addr_equals_addr(src, &vsk->remote_addr) && in __vsock_find_connected_socket()
260 dst->svm_port == vsk->local_addr.svm_port) { in __vsock_find_connected_socket()
261 return sk_vsock(vsk); in __vsock_find_connected_socket()
268 static void vsock_insert_unbound(struct vsock_sock *vsk) in vsock_insert_unbound() argument
271 __vsock_insert_bound(vsock_unbound_sockets, vsk); in vsock_insert_unbound()
275 void vsock_insert_connected(struct vsock_sock *vsk) in vsock_insert_connected() argument
278 &vsk->remote_addr, &vsk->local_addr); in vsock_insert_connected()
281 __vsock_insert_connected(list, vsk); in vsock_insert_connected()
286 void vsock_remove_bound(struct vsock_sock *vsk) in vsock_remove_bound() argument
289 if (__vsock_in_bound_table(vsk)) in vsock_remove_bound()
290 __vsock_remove_bound(vsk); in vsock_remove_bound()
295 void vsock_remove_connected(struct vsock_sock *vsk) in vsock_remove_connected() argument
298 if (__vsock_in_connected_table(vsk)) in vsock_remove_connected()
299 __vsock_remove_connected(vsk); in vsock_remove_connected()
335 void vsock_remove_sock(struct vsock_sock *vsk) in vsock_remove_sock() argument
337 vsock_remove_bound(vsk); in vsock_remove_sock()
338 vsock_remove_connected(vsk); in vsock_remove_sock()
350 struct vsock_sock *vsk; in vsock_for_each_connected_socket() local
351 list_for_each_entry(vsk, &vsock_connected_table[i], in vsock_for_each_connected_socket()
353 if (vsk->transport != transport) in vsock_for_each_connected_socket()
356 fn(sk_vsock(vsk)); in vsock_for_each_connected_socket()
417 static void vsock_deassign_transport(struct vsock_sock *vsk) in vsock_deassign_transport() argument
419 if (!vsk->transport) in vsock_deassign_transport()
422 vsk->transport->destruct(vsk); in vsock_deassign_transport()
423 module_put(vsk->transport->module); in vsock_deassign_transport()
424 vsk->transport = NULL; in vsock_deassign_transport()
439 int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk) in vsock_assign_transport() argument
442 struct sock *sk = sk_vsock(vsk); in vsock_assign_transport()
443 unsigned int remote_cid = vsk->remote_addr.svm_cid; in vsock_assign_transport()
455 if (psk && vsk->local_addr.svm_cid > VMADDR_CID_HOST && in vsock_assign_transport()
456 vsk->remote_addr.svm_cid > VMADDR_CID_HOST) in vsock_assign_transport()
457 vsk->remote_addr.svm_flags |= VMADDR_FLAG_TO_HOST; in vsock_assign_transport()
459 remote_flags = vsk->remote_addr.svm_flags; in vsock_assign_transport()
479 if (vsk->transport) { in vsock_assign_transport()
480 if (vsk->transport == new_transport) in vsock_assign_transport()
489 vsk->transport->release(vsk); in vsock_assign_transport()
490 vsock_deassign_transport(vsk); in vsock_assign_transport()
507 ret = new_transport->init(vsk, psk); in vsock_assign_transport()
513 vsk->transport = new_transport; in vsock_assign_transport()
558 struct vsock_sock *vsk = vsock_sk(sk); in vsock_is_accept_queue_empty() local
559 return list_empty(&vsk->accept_queue); in vsock_is_accept_queue_empty()
564 struct vsock_sock *vsk = vsock_sk(sk); in vsock_is_pending() local
565 return !list_empty(&vsk->pending_links); in vsock_is_pending()
570 struct vsock_sock *vsk = vsock_sk(sk); in vsock_send_shutdown() local
572 if (!vsk->transport) in vsock_send_shutdown()
575 return vsk->transport->shutdown(vsk, mode); in vsock_send_shutdown()
582 struct vsock_sock *vsk; in vsock_pending_work() local
585 vsk = container_of(work, struct vsock_sock, pending_work.work); in vsock_pending_work()
586 sk = sk_vsock(vsk); in vsock_pending_work()
587 listener = vsk->listener; in vsock_pending_work()
597 } else if (!vsk->rejected) { in vsock_pending_work()
611 vsock_remove_connected(vsk); in vsock_pending_work()
627 static int __vsock_bind_connectible(struct vsock_sock *vsk, in __vsock_bind_connectible() argument
669 vsock_addr_init(&vsk->local_addr, new_addr.svm_cid, new_addr.svm_port); in __vsock_bind_connectible()
676 __vsock_remove_bound(vsk); in __vsock_bind_connectible()
677 __vsock_insert_bound(vsock_bound_sockets(&vsk->local_addr), vsk); in __vsock_bind_connectible()
682 static int __vsock_bind_dgram(struct vsock_sock *vsk, in __vsock_bind_dgram() argument
685 return vsk->transport->dgram_bind(vsk, addr); in __vsock_bind_dgram()
690 struct vsock_sock *vsk = vsock_sk(sk); in __vsock_bind() local
694 if (vsock_addr_bound(&vsk->local_addr)) in __vsock_bind()
709 retval = __vsock_bind_connectible(vsk, addr); in __vsock_bind()
714 retval = __vsock_bind_dgram(vsk, addr); in __vsock_bind()
736 struct vsock_sock *vsk; in __vsock_create() local
751 vsk = vsock_sk(sk); in __vsock_create()
752 vsock_addr_init(&vsk->local_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in __vsock_create()
753 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in __vsock_create()
759 INIT_LIST_HEAD(&vsk->bound_table); in __vsock_create()
760 INIT_LIST_HEAD(&vsk->connected_table); in __vsock_create()
761 vsk->listener = NULL; in __vsock_create()
762 INIT_LIST_HEAD(&vsk->pending_links); in __vsock_create()
763 INIT_LIST_HEAD(&vsk->accept_queue); in __vsock_create()
764 vsk->rejected = false; in __vsock_create()
765 vsk->sent_request = false; in __vsock_create()
766 vsk->ignore_connecting_rst = false; in __vsock_create()
767 vsk->peer_shutdown = 0; in __vsock_create()
768 INIT_DELAYED_WORK(&vsk->connect_work, vsock_connect_timeout); in __vsock_create()
769 INIT_DELAYED_WORK(&vsk->pending_work, vsock_pending_work); in __vsock_create()
773 vsk->trusted = psk->trusted; in __vsock_create()
774 vsk->owner = get_cred(psk->owner); in __vsock_create()
775 vsk->connect_timeout = psk->connect_timeout; in __vsock_create()
776 vsk->buffer_size = psk->buffer_size; in __vsock_create()
777 vsk->buffer_min_size = psk->buffer_min_size; in __vsock_create()
778 vsk->buffer_max_size = psk->buffer_max_size; in __vsock_create()
781 vsk->trusted = ns_capable_noaudit(&init_user_ns, CAP_NET_ADMIN); in __vsock_create()
782 vsk->owner = get_current_cred(); in __vsock_create()
783 vsk->connect_timeout = VSOCK_DEFAULT_CONNECT_TIMEOUT; in __vsock_create()
784 vsk->buffer_size = VSOCK_DEFAULT_BUFFER_SIZE; in __vsock_create()
785 vsk->buffer_min_size = VSOCK_DEFAULT_BUFFER_MIN_SIZE; in __vsock_create()
786 vsk->buffer_max_size = VSOCK_DEFAULT_BUFFER_MAX_SIZE; in __vsock_create()
801 struct vsock_sock *vsk; in __vsock_release() local
803 vsk = vsock_sk(sk); in __vsock_release()
813 if (vsk->transport) in __vsock_release()
814 vsk->transport->release(vsk); in __vsock_release()
816 vsock_remove_sock(vsk); in __vsock_release()
836 struct vsock_sock *vsk = vsock_sk(sk); in vsock_sk_destruct() local
838 vsock_deassign_transport(vsk); in vsock_sk_destruct()
843 vsock_addr_init(&vsk->local_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in vsock_sk_destruct()
844 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in vsock_sk_destruct()
846 put_cred(vsk->owner); in vsock_sk_destruct()
867 s64 vsock_stream_has_data(struct vsock_sock *vsk) in vsock_stream_has_data() argument
869 return vsk->transport->stream_has_data(vsk); in vsock_stream_has_data()
873 s64 vsock_connectible_has_data(struct vsock_sock *vsk) in vsock_connectible_has_data() argument
875 struct sock *sk = sk_vsock(vsk); in vsock_connectible_has_data()
878 return vsk->transport->seqpacket_has_data(vsk); in vsock_connectible_has_data()
880 return vsock_stream_has_data(vsk); in vsock_connectible_has_data()
884 s64 vsock_stream_has_space(struct vsock_sock *vsk) in vsock_stream_has_space() argument
886 return vsk->transport->stream_has_space(vsk); in vsock_stream_has_space()
892 struct vsock_sock *vsk = vsock_sk(sk); in vsock_data_ready() local
894 if (vsock_stream_has_data(vsk) >= sk->sk_rcvlowat || in vsock_data_ready()
933 struct vsock_sock *vsk; in vsock_getname() local
937 vsk = vsock_sk(sk); in vsock_getname()
947 vm_addr = &vsk->remote_addr; in vsock_getname()
949 vm_addr = &vsk->local_addr; in vsock_getname()
1027 struct vsock_sock *vsk; in vsock_poll() local
1030 vsk = vsock_sk(sk); in vsock_poll()
1044 (vsk->peer_shutdown & SEND_SHUTDOWN))) { in vsock_poll()
1049 vsk->peer_shutdown & SEND_SHUTDOWN) { in vsock_poll()
1071 transport = vsk->transport; in vsock_poll()
1081 if (transport && transport->stream_is_active(vsk) && in vsock_poll()
1086 vsk, target, &data_ready_now); in vsock_poll()
1101 vsk->peer_shutdown & SEND_SHUTDOWN) { in vsock_poll()
1110 vsk, 1, &space_avail_now); in vsock_poll()
1142 struct vsock_sock *vsk = vsock_sk(sk); in vsock_read_skb() local
1144 return vsk->transport->read_skb(vsk, read_actor); in vsock_read_skb()
1152 struct vsock_sock *vsk; in vsock_dgram_sendmsg() local
1162 vsk = vsock_sk(sk); in vsock_dgram_sendmsg()
1166 transport = vsk->transport; in vsock_dgram_sendmsg()
1168 err = vsock_auto_bind(vsk); in vsock_dgram_sendmsg()
1191 remote_addr = &vsk->remote_addr; in vsock_dgram_sendmsg()
1199 if (!vsock_addr_bound(&vsk->remote_addr)) { in vsock_dgram_sendmsg()
1214 err = transport->dgram_enqueue(vsk, remote_addr, msg, len); in vsock_dgram_sendmsg()
1226 struct vsock_sock *vsk; in vsock_dgram_connect() local
1230 vsk = vsock_sk(sk); in vsock_dgram_connect()
1235 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, in vsock_dgram_connect()
1245 err = vsock_auto_bind(vsk); in vsock_dgram_connect()
1249 if (!vsk->transport->dgram_allow(remote_addr->svm_cid, in vsock_dgram_connect()
1255 memcpy(&vsk->remote_addr, remote_addr, sizeof(vsk->remote_addr)); in vsock_dgram_connect()
1279 struct vsock_sock *vsk; in vsock_dgram_recvmsg() local
1283 vsk = vsock_sk(sk); in vsock_dgram_recvmsg()
1291 return vsk->transport->dgram_dequeue(vsk, msg, len, flags); in vsock_dgram_recvmsg()
1314 static int vsock_transport_cancel_pkt(struct vsock_sock *vsk) in vsock_transport_cancel_pkt() argument
1316 const struct vsock_transport *transport = vsk->transport; in vsock_transport_cancel_pkt()
1321 return transport->cancel_pkt(vsk); in vsock_transport_cancel_pkt()
1327 struct vsock_sock *vsk; in vsock_connect_timeout() local
1329 vsk = container_of(work, struct vsock_sock, connect_work.work); in vsock_connect_timeout()
1330 sk = sk_vsock(vsk); in vsock_connect_timeout()
1339 vsock_transport_cancel_pkt(vsk); in vsock_connect_timeout()
1351 struct vsock_sock *vsk; in vsock_connect() local
1359 vsk = vsock_sk(sk); in vsock_connect()
1390 memcpy(&vsk->remote_addr, remote_addr, in vsock_connect()
1391 sizeof(vsk->remote_addr)); in vsock_connect()
1393 err = vsock_assign_transport(vsk, NULL); in vsock_connect()
1397 transport = vsk->transport; in vsock_connect()
1409 err = vsock_auto_bind(vsk); in vsock_connect()
1415 err = transport->connect(vsk); in vsock_connect()
1430 timeout = vsk->connect_timeout; in vsock_connect()
1447 if (mod_delayed_work(system_wq, &vsk->connect_work, in vsock_connect()
1463 vsock_transport_cancel_pkt(vsk); in vsock_connect()
1464 vsock_remove_connected(vsk); in vsock_connect()
1470 vsock_transport_cancel_pkt(vsk); in vsock_connect()
1578 struct vsock_sock *vsk; in vsock_listen() local
1594 vsk = vsock_sk(sk); in vsock_listen()
1596 if (!vsock_addr_bound(&vsk->local_addr)) { in vsock_listen()
1611 static void vsock_update_buffer_size(struct vsock_sock *vsk, in vsock_update_buffer_size() argument
1615 if (val > vsk->buffer_max_size) in vsock_update_buffer_size()
1616 val = vsk->buffer_max_size; in vsock_update_buffer_size()
1618 if (val < vsk->buffer_min_size) in vsock_update_buffer_size()
1619 val = vsk->buffer_min_size; in vsock_update_buffer_size()
1621 if (val != vsk->buffer_size && in vsock_update_buffer_size()
1623 transport->notify_buffer_size(vsk, &val); in vsock_update_buffer_size()
1625 vsk->buffer_size = val; in vsock_update_buffer_size()
1636 struct vsock_sock *vsk; in vsock_connectible_setsockopt() local
1657 vsk = vsock_sk(sk); in vsock_connectible_setsockopt()
1661 transport = vsk->transport; in vsock_connectible_setsockopt()
1666 vsock_update_buffer_size(vsk, transport, val); in vsock_connectible_setsockopt()
1671 vsk->buffer_max_size = val; in vsock_connectible_setsockopt()
1672 vsock_update_buffer_size(vsk, transport, vsk->buffer_size); in vsock_connectible_setsockopt()
1677 vsk->buffer_min_size = val; in vsock_connectible_setsockopt()
1678 vsock_update_buffer_size(vsk, transport, vsk->buffer_size); in vsock_connectible_setsockopt()
1691 vsk->connect_timeout = tv.tv_sec * HZ + in vsock_connectible_setsockopt()
1693 if (vsk->connect_timeout == 0) in vsock_connectible_setsockopt()
1694 vsk->connect_timeout = in vsock_connectible_setsockopt()
1721 struct vsock_sock *vsk = vsock_sk(sk); in vsock_connectible_getsockopt() local
1743 v.val64 = vsk->buffer_size; in vsock_connectible_getsockopt()
1747 v.val64 = vsk->buffer_max_size; in vsock_connectible_getsockopt()
1751 v.val64 = vsk->buffer_min_size; in vsock_connectible_getsockopt()
1756 lv = sock_get_timeout(vsk->connect_timeout, &v, in vsock_connectible_getsockopt()
1781 struct vsock_sock *vsk; in vsock_connectible_sendmsg() local
1790 vsk = vsock_sk(sk); in vsock_connectible_sendmsg()
1799 transport = vsk->transport; in vsock_connectible_sendmsg()
1811 vsk->peer_shutdown & RCV_SHUTDOWN) { in vsock_connectible_sendmsg()
1817 !vsock_addr_bound(&vsk->local_addr)) { in vsock_connectible_sendmsg()
1822 if (!vsock_addr_bound(&vsk->remote_addr)) { in vsock_connectible_sendmsg()
1830 err = transport->notify_send_init(vsk, &send_data); in vsock_connectible_sendmsg()
1838 while (vsock_stream_has_space(vsk) == 0 && in vsock_connectible_sendmsg()
1841 !(vsk->peer_shutdown & RCV_SHUTDOWN)) { in vsock_connectible_sendmsg()
1850 err = transport->notify_send_pre_block(vsk, &send_data); in vsock_connectible_sendmsg()
1879 (vsk->peer_shutdown & RCV_SHUTDOWN)) { in vsock_connectible_sendmsg()
1884 err = transport->notify_send_pre_enqueue(vsk, &send_data); in vsock_connectible_sendmsg()
1895 written = transport->seqpacket_enqueue(vsk, in vsock_connectible_sendmsg()
1898 written = transport->stream_enqueue(vsk, in vsock_connectible_sendmsg()
1910 vsk, written, &send_data); in vsock_connectible_sendmsg()
1937 struct vsock_sock *vsk; in vsock_connectible_wait_data() local
1941 vsk = vsock_sk(sk); in vsock_connectible_wait_data()
1943 transport = vsk->transport; in vsock_connectible_wait_data()
1947 data = vsock_connectible_has_data(vsk); in vsock_connectible_wait_data()
1953 (vsk->peer_shutdown & SEND_SHUTDOWN)) { in vsock_connectible_wait_data()
1964 err = transport->notify_recv_pre_block(vsk, target, recv_data); in vsock_connectible_wait_data()
2002 struct vsock_sock *vsk; in __vsock_stream_recvmsg() local
2010 vsk = vsock_sk(sk); in __vsock_stream_recvmsg()
2011 transport = vsk->transport; in __vsock_stream_recvmsg()
2020 if (target >= transport->stream_rcvhiwat(vsk)) { in __vsock_stream_recvmsg()
2027 err = transport->notify_recv_init(vsk, target, &recv_data); in __vsock_stream_recvmsg()
2040 err = transport->notify_recv_pre_dequeue(vsk, target, in __vsock_stream_recvmsg()
2045 read = transport->stream_dequeue(vsk, msg, len - copied, flags); in __vsock_stream_recvmsg()
2053 err = transport->notify_recv_post_dequeue(vsk, target, read, in __vsock_stream_recvmsg()
2080 struct vsock_sock *vsk; in __vsock_seqpacket_recvmsg() local
2086 vsk = vsock_sk(sk); in __vsock_seqpacket_recvmsg()
2087 transport = vsk->transport; in __vsock_seqpacket_recvmsg()
2095 msg_len = transport->seqpacket_dequeue(vsk, msg, flags); in __vsock_seqpacket_recvmsg()
2131 struct vsock_sock *vsk; in vsock_connectible_recvmsg() local
2143 vsk = vsock_sk(sk); in vsock_connectible_recvmsg()
2148 transport = vsk->transport; in vsock_connectible_recvmsg()
2208 struct vsock_sock *vsk; in vsock_set_rcvlowat() local
2210 vsk = vsock_sk(sk); in vsock_set_rcvlowat()
2212 if (val > vsk->buffer_size) in vsock_set_rcvlowat()
2215 transport = vsk->transport; in vsock_set_rcvlowat()
2220 err = transport->notify_set_rcvlowat(vsk, val); in vsock_set_rcvlowat()
2275 struct vsock_sock *vsk; in vsock_create() local
2305 vsk = vsock_sk(sk); in vsock_create()
2308 ret = vsock_assign_transport(vsk, NULL); in vsock_create()
2315 vsock_insert_unbound(vsk); in vsock_create()
2428 const struct vsock_transport *vsock_core_get_transport(struct vsock_sock *vsk) in vsock_core_get_transport() argument
2430 return vsk->transport; in vsock_core_get_transport()