Index: /trunk/src/VBox/Additions/solaris/SharedFolders/vboxfs_vnode.c
===================================================================
--- /trunk/src/VBox/Additions/solaris/SharedFolders/vboxfs_vnode.c	(revision 37838)
+++ /trunk/src/VBox/Additions/solaris/SharedFolders/vboxfs_vnode.c	(revision 37839)
@@ -1694,5 +1694,5 @@
 	 * invoke down the line VOP_ADDMAP()->sffs_addmap()
 	 */
-	int error;
+	int error = 0;
 	sfnode_t *node = VN2SFN(dvp);
 	ASSERT(node);
@@ -1715,26 +1715,41 @@
 	as_rangelock(asp);
 
+#if defined(VBOX_VFS_SOLARIS_10U6)
+	if ((flags & MAP_FIXED) == 0)
+	{
+		map_addr(addrp, len, off, 1, flags);
+		if (*addrp == NULL)
+			error = ENOMEM;
+	}
+	else
+		as_unmap(asp, *addrp, len);	/* User specified address, remove any previous mappings */
+#else
 	error = choose_addr(asp, addrp, len, off, ADDR_VACALIGN, flags);
-	if (!error)
+#endif
+
+	if (error)
 	{
-		segvn_crargs_t vnodeargs;
-		memset(&vnodeargs, 0, sizeof(vnodeargs));
-		vnodeargs.vp = dvp;
-		vnodeargs.cred = credp;
-		vnodeargs.offset = off;
-		vnodeargs.type = flags & MAP_TYPE;
-		vnodeargs.prot = prot;
-		vnodeargs.maxprot = maxprot;
-		vnodeargs.flags = flags & ~MAP_TYPE;
-		vnodeargs.amp = NULL;		/* anon. mapping */
-		vnodeargs.szc = 0;			/* preferred page size code */
-		vnodeargs.lgrp_mem_policy_flags = 0;
-
-		error = as_map(asp, *addrp, len, segvn_create, &vnodeargs);
-	}
+		as_rangeunlock(asp);
+		mutex_exit(&sffs_lock);
+		return (error);
+	}
+
+	segvn_crargs_t vnodeargs;
+	memset(&vnodeargs, 0, sizeof(vnodeargs));
+	vnodeargs.vp = dvp;
+	vnodeargs.cred = credp;
+	vnodeargs.offset = off;
+	vnodeargs.type = flags & MAP_TYPE;
+	vnodeargs.prot = prot;
+	vnodeargs.maxprot = maxprot;
+	vnodeargs.flags = flags & ~MAP_TYPE;
+	vnodeargs.amp = NULL;		/* anon. mapping */
+	vnodeargs.szc = 0;			/* preferred page size code */
+	vnodeargs.lgrp_mem_policy_flags = 0;
+
+	error = as_map(asp, *addrp, len, segvn_create, &vnodeargs);
 
 	as_rangeunlock(asp);
 	mutex_exit(&sffs_lock);
-
 	return (error);
 }
