diff --git a/unix/syscall_internal_darwin_test.go b/unix/syscall_internal_darwin_test.go
index d89ac2a..1ac0896 100644
--- a/unix/syscall_internal_darwin_test.go
+++ b/unix/syscall_internal_darwin_test.go
@@ -138,7 +138,7 @@
 	}
 }
 
-func TestSockaddVM_sockaddr(t *testing.T) {
+func TestSockaddrVM_sockaddr(t *testing.T) {
 	tests := []struct {
 		name string
 		sa   *SockaddrVM
@@ -154,7 +154,7 @@
 			},
 		},
 		{
-			name: "with CID and Port",
+			name: "with CID and port",
 			sa: &SockaddrVM{
 				CID:  VMADDR_CID_HOST,
 				Port: VMADDR_PORT_ANY,
diff --git a/unix/syscall_internal_linux_test.go b/unix/syscall_internal_linux_test.go
index 7ec21ca..fd6d219 100644
--- a/unix/syscall_internal_linux_test.go
+++ b/unix/syscall_internal_linux_test.go
@@ -254,6 +254,23 @@
 			proto: makeProto(^0),
 		},
 		{
+			name: "AF_VSOCK emtpy",
+			rsa:  sockaddrVMToAny(RawSockaddrVM{}),
+			err:  EAFNOSUPPORT,
+		},
+		{
+			name: "AF_VSOCK Cid and Port",
+			rsa: sockaddrVMToAny(RawSockaddrVM{
+				Family: AF_VSOCK,
+				Cid:    VMADDR_CID_HOST,
+				Port:   VMADDR_PORT_ANY,
+			}),
+			sa: &SockaddrVM{
+				CID:  VMADDR_CID_HOST,
+				Port: VMADDR_PORT_ANY,
+			},
+		},
+		{
 			name: "AF_MAX EAFNOSUPPORT",
 			rsa: &RawSockaddrAny{
 				Addr: RawSockaddr{
@@ -788,6 +805,58 @@
 	}
 }
 
+func TestSockaddrVM_sockaddr(t *testing.T) {
+	tests := []struct {
+		name string
+		sa   *SockaddrVM
+		raw  *RawSockaddrVM
+		err  error
+	}{
+		{
+			name: "empty",
+			sa:   &SockaddrVM{},
+			raw: &RawSockaddrVM{
+				Family: AF_VSOCK,
+			},
+		},
+		{
+			name: "with CID, port and flags",
+			sa: &SockaddrVM{
+				CID:   VMADDR_CID_HOST,
+				Port:  VMADDR_PORT_ANY,
+				Flags: VMADDR_FLAG_TO_HOST,
+			},
+			raw: &RawSockaddrVM{
+				Family: AF_VSOCK,
+				Port:   VMADDR_PORT_ANY,
+				Cid:    VMADDR_CID_HOST,
+				Flags:  VMADDR_FLAG_TO_HOST,
+			},
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			out, l, err := tt.sa.sockaddr()
+			if err != tt.err {
+				t.Fatalf("unexpected error: %v, want: %v", err, tt.err)
+			}
+
+			// Must be 0 on error or a fixed size otherwise.
+			if (tt.err != nil && l != 0) || (tt.raw != nil && l != SizeofSockaddrVM) {
+				t.Fatalf("unexpected Socklen: %d", l)
+			}
+
+			if out != nil {
+				raw := (*RawSockaddrVM)(out)
+				if !reflect.DeepEqual(raw, tt.raw) {
+					t.Fatalf("unexpected RawSockaddrVM:\n got: %#v\nwant: %#v", raw, tt.raw)
+				}
+			}
+		})
+	}
+}
+
 // These helpers explicitly copy the contents of in into out to produce
 // the correct sockaddr structure, without relying on unsafe casting to
 // a type of a larger size.
@@ -862,3 +931,12 @@
 	)
 	return &out
 }
+
+func sockaddrVMToAny(in RawSockaddrVM) *RawSockaddrAny {
+	var out RawSockaddrAny
+	copy(
+		(*(*[SizeofSockaddrAny]byte)(unsafe.Pointer(&out)))[:],
+		(*(*[SizeofSockaddrVM]byte)(unsafe.Pointer(&in)))[:],
+	)
+	return &out
+}
