From: Stefano Garzarella <sgarzare@redhat.com> To: Bobby Eshleman <bobby.eshleman@bytedance.com> Cc: Stefan Hajnoczi <stefanha@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>, Xuan Zhuo <xuanzhuo@linux.alibaba.com>, "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, "K. Y. Srinivasan" <kys@microsoft.com>, Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>, Bryan Tan <bryantan@vmware.com>, Vishnu Dasa <vdasa@vmware.com>, VMware PV-Drivers Reviewers <pv-drivers@vmware.com>, Dan Carpenter <dan.carpenter@linaro.org>, Simon Horman <simon.horman@corigine.com>, Krasnov Arseniy <oxffffaa@gmail.com>, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hyperv@vger.kernel.org, bpf@vger.kernel.org Subject: Re: [PATCH RFC net-next v4 4/8] vsock: make vsock bind reusable Date: Thu, 22 Jun 2023 17:25:55 +0200 [thread overview] Message-ID: <p2tgn3wczd3t3dodyicczetr2nqnqpwcadz6ql5hpvg2cd2dxa@phheksxhxfna> (raw) In-Reply-To: <20230413-b4-vsock-dgram-v4-4-0cebbb2ae899@bytedance.com> On Sat, Jun 10, 2023 at 12:58:31AM +0000, Bobby Eshleman wrote: >This commit makes the bind table management functions in vsock usable >for different bind tables. For use by datagrams in a future patch. > >Signed-off-by: Bobby Eshleman <bobby.eshleman@bytedance.com> >--- > net/vmw_vsock/af_vsock.c | 33 ++++++++++++++++++++++++++------- > 1 file changed, 26 insertions(+), 7 deletions(-) > >diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c >index ef86765f3765..7a3ca4270446 100644 >--- a/net/vmw_vsock/af_vsock.c >+++ b/net/vmw_vsock/af_vsock.c >@@ -230,11 +230,12 @@ static void __vsock_remove_connected(struct vsock_sock *vsk) > sock_put(&vsk->sk); > } > >-static struct sock *__vsock_find_bound_socket(struct sockaddr_vm *addr) >+struct sock *vsock_find_bound_socket_common(struct sockaddr_vm *addr, >+ struct list_head *bind_table) > { > struct vsock_sock *vsk; > >- list_for_each_entry(vsk, vsock_bound_sockets(addr), bound_table) { >+ list_for_each_entry(vsk, bind_table, bound_table) { > if (vsock_addr_equals_addr(addr, &vsk->local_addr)) > return sk_vsock(vsk); > >@@ -247,6 +248,11 @@ static struct sock *__vsock_find_bound_socket(struct sockaddr_vm *addr) > return NULL; > } > >+static struct sock *__vsock_find_bound_socket(struct sockaddr_vm *addr) >+{ >+ return vsock_find_bound_socket_common(addr, vsock_bound_sockets(addr)); >+} >+ > static struct sock *__vsock_find_connected_socket(struct sockaddr_vm *src, > struct sockaddr_vm *dst) > { >@@ -646,12 +652,17 @@ static void vsock_pending_work(struct work_struct *work) > > /**** SOCKET OPERATIONS ****/ > >-static int __vsock_bind_connectible(struct vsock_sock *vsk, >- struct sockaddr_vm *addr) >+static int vsock_bind_common(struct vsock_sock *vsk, >+ struct sockaddr_vm *addr, >+ struct list_head *bind_table, >+ size_t table_size) > { > static u32 port; > struct sockaddr_vm new_addr; > >+ if (table_size < VSOCK_HASH_SIZE) >+ return -1; Why we need this check now? >+ > if (!port) > port = get_random_u32_above(LAST_RESERVED_PORT); > >@@ -667,7 +678,8 @@ static int __vsock_bind_connectible(struct vsock_sock *vsk, > > new_addr.svm_port = port++; > >- if (!__vsock_find_bound_socket(&new_addr)) { >+ if (!vsock_find_bound_socket_common(&new_addr, >+ &bind_table[VSOCK_HASH(addr)])) { > found = true; > break; > } >@@ -684,7 +696,8 @@ static int __vsock_bind_connectible(struct vsock_sock *vsk, > return -EACCES; > } > >- if (__vsock_find_bound_socket(&new_addr)) >+ if (vsock_find_bound_socket_common(&new_addr, >+ &bind_table[VSOCK_HASH(addr)])) > return -EADDRINUSE; > } > >@@ -696,11 +709,17 @@ static int __vsock_bind_connectible(struct vsock_sock *vsk, > * by AF_UNIX. > */ > __vsock_remove_bound(vsk); >- __vsock_insert_bound(vsock_bound_sockets(&vsk->local_addr), vsk); >+ __vsock_insert_bound(&bind_table[VSOCK_HASH(&vsk->local_addr)], vsk); > > return 0; > } > >+static int __vsock_bind_connectible(struct vsock_sock *vsk, >+ struct sockaddr_vm *addr) >+{ >+ return vsock_bind_common(vsk, addr, vsock_bind_table, VSOCK_HASH_SIZE + 1); >+} >+ > static int __vsock_bind_dgram(struct vsock_sock *vsk, > struct sockaddr_vm *addr) > { > >-- >2.30.2 > The rest seems okay to me, but I agree with Simon's suggestion. Stefano
WARNING: multiple messages have this Message-ID (diff)
From: Stefano Garzarella <sgarzare@redhat.com> To: Bobby Eshleman <bobby.eshleman@bytedance.com> Cc: linux-hyperv@vger.kernel.org, Stefan Hajnoczi <stefanha@redhat.com>, kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>, VMware PV-Drivers Reviewers <pv-drivers@vmware.com>, Simon Horman <simon.horman@corigine.com>, virtualization@lists.linux-foundation.org, Eric Dumazet <edumazet@google.com>, Dan Carpenter <dan.carpenter@linaro.org>, Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>, Bryan Tan <bryantan@vmware.com>, Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Haiyang Zhang <haiyangz@microsoft.com>, Krasnov Arseniy <oxffffaa@gmail.com>, Vishnu Dasa <vdasa@vmware.com>, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, "David S. Miller" <davem@davemloft.net> Subject: Re: [PATCH RFC net-next v4 4/8] vsock: make vsock bind reusable Date: Thu, 22 Jun 2023 17:25:55 +0200 [thread overview] Message-ID: <p2tgn3wczd3t3dodyicczetr2nqnqpwcadz6ql5hpvg2cd2dxa@phheksxhxfna> (raw) In-Reply-To: <20230413-b4-vsock-dgram-v4-4-0cebbb2ae899@bytedance.com> On Sat, Jun 10, 2023 at 12:58:31AM +0000, Bobby Eshleman wrote: >This commit makes the bind table management functions in vsock usable >for different bind tables. For use by datagrams in a future patch. > >Signed-off-by: Bobby Eshleman <bobby.eshleman@bytedance.com> >--- > net/vmw_vsock/af_vsock.c | 33 ++++++++++++++++++++++++++------- > 1 file changed, 26 insertions(+), 7 deletions(-) > >diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c >index ef86765f3765..7a3ca4270446 100644 >--- a/net/vmw_vsock/af_vsock.c >+++ b/net/vmw_vsock/af_vsock.c >@@ -230,11 +230,12 @@ static void __vsock_remove_connected(struct vsock_sock *vsk) > sock_put(&vsk->sk); > } > >-static struct sock *__vsock_find_bound_socket(struct sockaddr_vm *addr) >+struct sock *vsock_find_bound_socket_common(struct sockaddr_vm *addr, >+ struct list_head *bind_table) > { > struct vsock_sock *vsk; > >- list_for_each_entry(vsk, vsock_bound_sockets(addr), bound_table) { >+ list_for_each_entry(vsk, bind_table, bound_table) { > if (vsock_addr_equals_addr(addr, &vsk->local_addr)) > return sk_vsock(vsk); > >@@ -247,6 +248,11 @@ static struct sock *__vsock_find_bound_socket(struct sockaddr_vm *addr) > return NULL; > } > >+static struct sock *__vsock_find_bound_socket(struct sockaddr_vm *addr) >+{ >+ return vsock_find_bound_socket_common(addr, vsock_bound_sockets(addr)); >+} >+ > static struct sock *__vsock_find_connected_socket(struct sockaddr_vm *src, > struct sockaddr_vm *dst) > { >@@ -646,12 +652,17 @@ static void vsock_pending_work(struct work_struct *work) > > /**** SOCKET OPERATIONS ****/ > >-static int __vsock_bind_connectible(struct vsock_sock *vsk, >- struct sockaddr_vm *addr) >+static int vsock_bind_common(struct vsock_sock *vsk, >+ struct sockaddr_vm *addr, >+ struct list_head *bind_table, >+ size_t table_size) > { > static u32 port; > struct sockaddr_vm new_addr; > >+ if (table_size < VSOCK_HASH_SIZE) >+ return -1; Why we need this check now? >+ > if (!port) > port = get_random_u32_above(LAST_RESERVED_PORT); > >@@ -667,7 +678,8 @@ static int __vsock_bind_connectible(struct vsock_sock *vsk, > > new_addr.svm_port = port++; > >- if (!__vsock_find_bound_socket(&new_addr)) { >+ if (!vsock_find_bound_socket_common(&new_addr, >+ &bind_table[VSOCK_HASH(addr)])) { > found = true; > break; > } >@@ -684,7 +696,8 @@ static int __vsock_bind_connectible(struct vsock_sock *vsk, > return -EACCES; > } > >- if (__vsock_find_bound_socket(&new_addr)) >+ if (vsock_find_bound_socket_common(&new_addr, >+ &bind_table[VSOCK_HASH(addr)])) > return -EADDRINUSE; > } > >@@ -696,11 +709,17 @@ static int __vsock_bind_connectible(struct vsock_sock *vsk, > * by AF_UNIX. > */ > __vsock_remove_bound(vsk); >- __vsock_insert_bound(vsock_bound_sockets(&vsk->local_addr), vsk); >+ __vsock_insert_bound(&bind_table[VSOCK_HASH(&vsk->local_addr)], vsk); > > return 0; > } > >+static int __vsock_bind_connectible(struct vsock_sock *vsk, >+ struct sockaddr_vm *addr) >+{ >+ return vsock_bind_common(vsk, addr, vsock_bind_table, VSOCK_HASH_SIZE + 1); >+} >+ > static int __vsock_bind_dgram(struct vsock_sock *vsk, > struct sockaddr_vm *addr) > { > >-- >2.30.2 > The rest seems okay to me, but I agree with Simon's suggestion. Stefano _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2023-06-22 15:27 UTC|newest] Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-06-10 0:58 [PATCH RFC net-next v4 0/8] virtio/vsock: support datagrams Bobby Eshleman 2023-06-10 0:58 ` [PATCH RFC net-next v4 1/8] vsock/dgram: generalize recvmsg and drop transport->dgram_dequeue Bobby Eshleman 2023-06-11 20:43 ` Arseniy Krasnov 2023-06-22 14:51 ` Stefano Garzarella 2023-06-22 14:51 ` Stefano Garzarella 2023-06-22 19:23 ` Arseniy Krasnov 2023-06-22 23:34 ` Bobby Eshleman 2023-06-22 23:37 ` Bobby Eshleman 2023-06-23 8:14 ` Stefano Garzarella 2023-06-23 8:14 ` Stefano Garzarella 2023-06-22 23:25 ` Bobby Eshleman 2023-06-10 0:58 ` [PATCH RFC net-next v4 2/8] vsock: refactor transport lookup code Bobby Eshleman 2023-06-22 14:57 ` Stefano Garzarella 2023-06-22 14:57 ` Stefano Garzarella 2023-06-10 0:58 ` [PATCH RFC net-next v4 3/8] vsock: support multi-transport datagrams Bobby Eshleman 2023-06-22 15:19 ` Stefano Garzarella 2023-06-22 15:19 ` Stefano Garzarella 2023-06-23 2:50 ` Bobby Eshleman 2023-06-23 2:59 ` Bobby Eshleman 2023-06-26 14:50 ` Stefano Garzarella 2023-06-26 14:50 ` Stefano Garzarella 2023-06-10 0:58 ` [PATCH RFC net-next v4 4/8] vsock: make vsock bind reusable Bobby Eshleman 2023-06-12 9:49 ` Simon Horman 2023-06-22 23:00 ` Bobby Eshleman 2023-06-22 15:25 ` Stefano Garzarella [this message] 2023-06-22 15:25 ` Stefano Garzarella 2023-06-22 23:05 ` Bobby Eshleman 2023-06-23 8:15 ` Stefano Garzarella 2023-06-23 8:15 ` Stefano Garzarella 2023-06-10 0:58 ` [PATCH RFC net-next v4 5/8] virtio/vsock: add VIRTIO_VSOCK_F_DGRAM feature bit Bobby Eshleman 2023-06-22 15:29 ` Stefano Garzarella 2023-06-22 15:29 ` Stefano Garzarella 2023-06-22 23:06 ` Bobby Eshleman 2023-06-10 0:58 ` [PATCH RFC net-next v4 6/8] virtio/vsock: support dgrams Bobby Eshleman 2023-06-11 20:49 ` Arseniy Krasnov 2023-06-22 16:09 ` Stefano Garzarella 2023-06-22 16:09 ` Stefano Garzarella 2023-06-22 18:46 ` Arseniy Krasnov 2023-06-23 4:37 ` Bobby Eshleman 2023-06-26 15:03 ` Stefano Garzarella 2023-06-26 15:03 ` Stefano Garzarella 2023-06-27 1:19 ` Bobby Eshleman 2023-06-29 12:30 ` Stefano Garzarella 2023-06-29 12:30 ` Stefano Garzarella 2023-06-22 16:31 ` Stefano Garzarella 2023-06-22 16:31 ` Stefano Garzarella 2023-06-10 0:58 ` [PATCH RFC net-next v4 7/8] vsock: Add lockless sendmsg() support Bobby Eshleman 2023-06-12 9:53 ` Simon Horman 2023-06-22 22:59 ` Bobby Eshleman 2023-06-22 16:37 ` Stefano Garzarella 2023-06-22 16:37 ` Stefano Garzarella 2023-06-22 22:57 ` Bobby Eshleman 2023-06-10 0:58 ` [PATCH RFC net-next v4 8/8] tests: add vsock dgram tests Bobby Eshleman 2023-06-11 20:54 ` Arseniy Krasnov 2023-06-22 23:16 ` Bobby Eshleman 2023-06-23 18:34 ` Arseniy Krasnov 2023-06-23 6:33 ` Bobby Eshleman
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=p2tgn3wczd3t3dodyicczetr2nqnqpwcadz6ql5hpvg2cd2dxa@phheksxhxfna \ --to=sgarzare@redhat.com \ --cc=bobby.eshleman@bytedance.com \ --cc=bpf@vger.kernel.org \ --cc=bryantan@vmware.com \ --cc=dan.carpenter@linaro.org \ --cc=davem@davemloft.net \ --cc=decui@microsoft.com \ --cc=edumazet@google.com \ --cc=haiyangz@microsoft.com \ --cc=jasowang@redhat.com \ --cc=kuba@kernel.org \ --cc=kvm@vger.kernel.org \ --cc=kys@microsoft.com \ --cc=linux-hyperv@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mst@redhat.com \ --cc=netdev@vger.kernel.org \ --cc=oxffffaa@gmail.com \ --cc=pabeni@redhat.com \ --cc=pv-drivers@vmware.com \ --cc=simon.horman@corigine.com \ --cc=stefanha@redhat.com \ --cc=vdasa@vmware.com \ --cc=virtualization@lists.linux-foundation.org \ --cc=wei.liu@kernel.org \ --cc=xuanzhuo@linux.alibaba.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.