From: "Michael S. Tsirkin" <mst@redhat.com>
To: Bobby Eshleman <bobbyeshleman@gmail.com>
Cc: "Stefano Garzarella" <sgarzare@redhat.com>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Simon Horman" <horms@kernel.org>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Eugenio Pérez" <eperezma@redhat.com>,
"Xuan Zhuo" <xuanzhuo@linux.alibaba.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" <bryan-bt.tan@broadcom.com>,
"Vishnu Dasa" <vishnu.dasa@broadcom.com>,
"Broadcom internal kernel review list"
<bcm-kernel-feedback-list@broadcom.com>,
"Shuah Khan" <shuah@kernel.org>, "Long Li" <longli@microsoft.com>,
linux-kernel@vger.kernel.org, virtualization@lists.linux.dev,
netdev@vger.kernel.org, kvm@vger.kernel.org,
linux-hyperv@vger.kernel.org, linux-kselftest@vger.kernel.org,
berrange@redhat.com, "Sargun Dhillon" <sargun@sargun.me>,
"Bobby Eshleman" <bobbyeshleman@meta.com>
Subject: Re: [PATCH RFC net-next v13 02/13] vsock: add netns to vsock core
Date: Tue, 13 Jan 2026 02:46:54 -0500 [thread overview]
Message-ID: <20260113024548-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <aWWFB2K5H5OXGWP8@devvm11784.nha0.facebook.com>
On Mon, Jan 12, 2026 at 03:34:31PM -0800, Bobby Eshleman wrote:
> On Sun, Jan 11, 2026 at 01:43:37AM -0500, Michael S. Tsirkin wrote:
> > On Tue, Dec 23, 2025 at 04:28:36PM -0800, Bobby Eshleman wrote:
> > > From: Bobby Eshleman <bobbyeshleman@meta.com>
> > >
> > > Add netns logic to vsock core. Additionally, modify transport hook
> > > prototypes to be used by later transport-specific patches (e.g.,
> > > *_seqpacket_allow()).
> > >
> > > Namespaces are supported primarily by changing socket lookup functions
> > > (e.g., vsock_find_connected_socket()) to take into account the socket
> > > namespace and the namespace mode before considering a candidate socket a
> > > "match".
> > >
> > > This patch also introduces the sysctl /proc/sys/net/vsock/ns_mode to
> > > report the mode and /proc/sys/net/vsock/child_ns_mode to set the mode
> > > for new namespaces.
> > >
> > > Add netns functionality (initialization, passing to transports, procfs,
> > > etc...) to the af_vsock socket layer. Later patches that add netns
> > > support to transports depend on this patch.
> > >
> > > dgram_allow(), stream_allow(), and seqpacket_allow() callbacks are
> > > modified to take a vsk in order to perform logic on namespace modes. In
> > > future patches, the net will also be used for socket
> > > lookups in these functions.
> > >
> > > Signed-off-by: Bobby Eshleman <bobbyeshleman@meta.com>
> >
> > ...
> >
> >
> > > static int __vsock_bind_connectible(struct vsock_sock *vsk,
> > > struct sockaddr_vm *addr)
> > > {
> > > + struct net *net = sock_net(sk_vsock(vsk));
> > > static u32 port;
> > > struct sockaddr_vm new_addr;
> > >
> >
> >
> > Hmm this static port gives me pause. So some port number info leaks
> > between namespaces. I am not saying it's a big security issue
> > and yet ... people expect isolation.
>
> Probably the easiest solution is making it per-ns, my quick rough draft
> looks like this:
Sounds like a plan.
> diff --git a/include/net/netns/vsock.h b/include/net/netns/vsock.h
> index e2325e2d6ec5..b34d69a22fa8 100644
> --- a/include/net/netns/vsock.h
> +++ b/include/net/netns/vsock.h
> @@ -11,6 +11,10 @@ enum vsock_net_mode {
>
> struct netns_vsock {
> struct ctl_table_header *sysctl_hdr;
> +
> + /* protected by the vsock_table_lock in af_vsock.c */
> + u32 port;
> +
> enum vsock_net_mode mode;
> enum vsock_net_mode child_ns_mode;
> };
> diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
> index 9d614e4a4fa5..cd2a47140134 100644
> --- a/net/vmw_vsock/af_vsock.c
> +++ b/net/vmw_vsock/af_vsock.c
> @@ -748,11 +748,10 @@ static int __vsock_bind_connectible(struct vsock_sock *vsk,
> struct sockaddr_vm *addr)
> {
> struct net *net = sock_net(sk_vsock(vsk));
> - static u32 port;
> struct sockaddr_vm new_addr;
>
> - if (!port)
> - port = get_random_u32_above(LAST_RESERVED_PORT);
> + if (!net->vsock.port)
> + net->vsock.port = get_random_u32_above(LAST_RESERVED_PORT);
>
> vsock_addr_init(&new_addr, addr->svm_cid, addr->svm_port);
>
> @@ -761,11 +760,11 @@ static int __vsock_bind_connectible(struct vsock_sock *vsk,
> unsigned int i;
>
> for (i = 0; i < MAX_PORT_RETRIES; i++) {
> - if (port == VMADDR_PORT_ANY ||
> - port <= LAST_RESERVED_PORT)
> - port = LAST_RESERVED_PORT + 1;
> + if (net->vsock.port == VMADDR_PORT_ANY ||
> + net->vsock.port <= LAST_RESERVED_PORT)
> + net->vsock.port = LAST_RESERVED_PORT + 1;
>
> - new_addr.svm_port = port++;
> + new_addr.svm_port = net->vsock.port++;
>
> if (!__vsock_find_bound_socket_net(&new_addr, net)) {
> found = true;
>
>
>
> Not as nice, but not necessarily horrid. WDYT?
>
> Best,
> Bobby
I wouldn't call static vars "nice". LGTM.
next prev parent reply other threads:[~2026-01-13 7:47 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-24 0:28 [PATCH RFC net-next v13 00/13] vsock: add namespace support to vhost-vsock and loopback Bobby Eshleman
2025-12-24 0:28 ` [PATCH RFC net-next v13 01/13] vsock: add per-net vsock NS mode state Bobby Eshleman
2026-01-11 6:29 ` Michael S. Tsirkin
2025-12-24 0:28 ` [PATCH RFC net-next v13 02/13] vsock: add netns to vsock core Bobby Eshleman
2026-01-11 6:43 ` Michael S. Tsirkin
2026-01-12 23:34 ` Bobby Eshleman
2026-01-13 0:52 ` Bobby Eshleman
2026-01-13 9:48 ` Stefano Garzarella
2026-01-13 12:34 ` Michael S. Tsirkin
2026-01-13 7:46 ` Michael S. Tsirkin [this message]
2025-12-24 0:28 ` [PATCH RFC net-next v13 03/13] virtio: set skb owner of virtio_transport_reset_no_sock() reply Bobby Eshleman
2026-01-11 6:46 ` Michael S. Tsirkin
2026-01-12 23:21 ` Bobby Eshleman
2025-12-24 0:28 ` [PATCH RFC net-next v13 04/13] vsock: add netns support to virtio transports Bobby Eshleman
2025-12-24 0:28 ` [PATCH RFC net-next v13 05/13] selftests/vsock: increase timeout to 1200 Bobby Eshleman
2025-12-24 0:28 ` [PATCH RFC net-next v13 06/13] selftests/vsock: add namespace helpers to vmtest.sh Bobby Eshleman
2025-12-24 0:28 ` [PATCH RFC net-next v13 07/13] selftests/vsock: prepare vm management helpers for namespaces Bobby Eshleman
2025-12-24 0:28 ` [PATCH RFC net-next v13 08/13] selftests/vsock: add vm_dmesg_{warn,oops}_count() helpers Bobby Eshleman
2025-12-24 0:28 ` [PATCH RFC net-next v13 09/13] selftests/vsock: use ss to wait for listeners instead of /proc/net Bobby Eshleman
2025-12-24 0:28 ` [PATCH RFC net-next v13 10/13] selftests/vsock: add tests for proc sys vsock ns_mode Bobby Eshleman
2025-12-24 0:28 ` [PATCH RFC net-next v13 11/13] selftests/vsock: add namespace tests for CID collisions Bobby Eshleman
2025-12-24 0:28 ` [PATCH RFC net-next v13 12/13] selftests/vsock: add tests for host <-> vm connectivity with namespaces Bobby Eshleman
2025-12-24 0:28 ` [PATCH RFC net-next v13 13/13] selftests/vsock: add tests for namespace deletion Bobby Eshleman
2026-01-10 0:11 ` [PATCH RFC net-next v13 00/13] vsock: add namespace support to vhost-vsock and loopback Bobby Eshleman
2026-01-11 0:12 ` Michael S. Tsirkin
2026-01-12 17:26 ` Stefano Garzarella
2026-01-12 21:48 ` 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=20260113024548-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=berrange@redhat.com \
--cc=bobbyeshleman@gmail.com \
--cc=bobbyeshleman@meta.com \
--cc=bryan-bt.tan@broadcom.com \
--cc=davem@davemloft.net \
--cc=decui@microsoft.com \
--cc=edumazet@google.com \
--cc=eperezma@redhat.com \
--cc=haiyangz@microsoft.com \
--cc=horms@kernel.org \
--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=linux-kselftest@vger.kernel.org \
--cc=longli@microsoft.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sargun@sargun.me \
--cc=sgarzare@redhat.com \
--cc=shuah@kernel.org \
--cc=stefanha@redhat.com \
--cc=virtualization@lists.linux.dev \
--cc=vishnu.dasa@broadcom.com \
--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: link
Be 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.