From: David Miller <firstname.lastname@example.org> To: email@example.com Cc: firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com Subject: Re: [PATCH net]: hv_sock: Remove the accept port restriction Date: Tue, 14 Jan 2020 11:51:27 -0800 (PST) Message-ID: <firstname.lastname@example.org> (raw) In-Reply-To: <SN4PR2101MB08808AAFCEB4E8FC178A4B79C0340@SN4PR2101MB0880.namprd21.prod.outlook.com> From: Sunil Muthuswamy <email@example.com> Date: Tue, 14 Jan 2020 00:52:14 +0000 > Currently, hv_sock restricts the port the guest socket can accept > connections on. hv_sock divides the socket port namespace into two parts > for server side (listening socket), 0-0x7FFFFFFF & 0x80000000-0xFFFFFFFF > (there are no restrictions on client port namespace). The first part > (0-0x7FFFFFFF) is reserved for sockets where connections can be accepted. > The second part (0x80000000-0xFFFFFFFF) is reserved for allocating ports > for the peer (host) socket, once a connection is accepted. > This reservation of the port namespace is specific to hv_sock and not > known by the generic vsock library (ex: af_vsock). This is problematic > because auto-binds/ephemeral ports are handled by the generic vsock > library and it has no knowledge of this port reservation and could > allocate a port that is not compatible with hv_sock (and legitimately so). > The issue hasn't surfaced so far because the auto-bind code of vsock > (__vsock_bind_stream) prior to the change 'VSOCK: bind to random port for > VMADDR_PORT_ANY' would start walking up from LAST_RESERVED_PORT (1023) and > start assigning ports. That will take a large number of iterations to hit > 0x7FFFFFFF. But, after the above change to randomize port selection, the > issue has started coming up more frequently. > There has really been no good reason to have this port reservation logic > in hv_sock from the get go. Reserving a local port for peer ports is not > how things are handled generally. Peer ports should reflect the peer port. > This fixes the issue by lifting the port reservation, and also returns the > right peer port. Since the code converts the GUID to the peer port (by > using the first 4 bytes), there is a possibility of conflicts, but that > seems like a reasonable risk to take, given this is limited to vsock and > that only applies to all local sockets. > > Signed-off-by: Sunil Muthuswamy <firstname.lastname@example.org> Applied.
prev parent reply index Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-01-14 0:52 Sunil Muthuswamy 2020-01-14 19:51 ` David Miller [this message]
Reply instructions: You may reply publically 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 \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.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
Linux-HyperV Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-hyperv/0 linux-hyperv/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-hyperv linux-hyperv/ https://lore.kernel.org/linux-hyperv \ firstname.lastname@example.org public-inbox-index linux-hyperv Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-hyperv AGPL code for this site: git clone https://public-inbox.org/public-inbox.git