Revert "af_vsock: Assign the vsock transport considering the vsock address flags"
This reverts commit 833da12eff which is
commit 7f816984f439dfe24da25032254cb10512900346 upstream.
It breaks the Android kernel abi and can be brought back in the future
in an abi-safe way if it is really needed.
Bug: 161946584
Change-Id: I5a08f3e2c9aba528cfe05df1f5c3b24f059955dd
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -426,8 +426,7 @@ static void vsock_deassign_transport(struct vsock_sock *vsk)
|
||||
* The vsk->remote_addr is used to decide which transport to use:
|
||||
* - remote CID == VMADDR_CID_LOCAL or g2h->local_cid or VMADDR_CID_HOST if
|
||||
* g2h is not loaded, will use local transport;
|
||||
* - remote CID <= VMADDR_CID_HOST or h2g is not loaded or remote flags field
|
||||
* includes VMADDR_FLAG_TO_HOST flag value, will use guest->host transport;
|
||||
* - remote CID <= VMADDR_CID_HOST will use guest->host transport;
|
||||
* - remote CID > VMADDR_CID_HOST will use host->guest transport;
|
||||
*/
|
||||
int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk)
|
||||
@@ -435,7 +434,6 @@ int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk)
|
||||
const struct vsock_transport *new_transport;
|
||||
struct sock *sk = sk_vsock(vsk);
|
||||
unsigned int remote_cid = vsk->remote_addr.svm_cid;
|
||||
__u8 remote_flags;
|
||||
int ret;
|
||||
|
||||
/* If the packet is coming with the source and destination CIDs higher
|
||||
@@ -450,8 +448,6 @@ int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk)
|
||||
vsk->remote_addr.svm_cid > VMADDR_CID_HOST)
|
||||
vsk->remote_addr.svm_flags |= VMADDR_FLAG_TO_HOST;
|
||||
|
||||
remote_flags = vsk->remote_addr.svm_flags;
|
||||
|
||||
switch (sk->sk_type) {
|
||||
case SOCK_DGRAM:
|
||||
new_transport = transport_dgram;
|
||||
@@ -459,8 +455,7 @@ int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk)
|
||||
case SOCK_STREAM:
|
||||
if (vsock_use_local_transport(remote_cid))
|
||||
new_transport = transport_local;
|
||||
else if (remote_cid <= VMADDR_CID_HOST || !transport_h2g ||
|
||||
(remote_flags & VMADDR_FLAG_TO_HOST))
|
||||
else if (remote_cid <= VMADDR_CID_HOST || !transport_h2g)
|
||||
new_transport = transport_g2h;
|
||||
else
|
||||
new_transport = transport_h2g;
|
||||
|
||||
Reference in New Issue
Block a user