Index: uspace/srv/vfs/vfs.c
===================================================================
--- uspace/srv/vfs/vfs.c	(revision 42a619b240617c4f0e4dd04ddf2366f3c5a0709a)
+++ uspace/srv/vfs/vfs.c	(revision e2ab36f1e7abed06e401610969fa967f43774dd8)
@@ -36,4 +36,5 @@
  */
 
+#include <vfs/vfs.h>
 #include <ipc/services.h>
 #include <abi/ipc/event.h>
@@ -47,5 +48,5 @@
 #include <as.h>
 #include <atomic.h>
-#include <vfs/vfs.h>
+#include <macros.h>
 #include "vfs.h"
 
@@ -143,6 +144,8 @@
 	case VFS_TASK_STATE_CHANGE:
 		if (IPC_GET_ARG1(*call) == VFS_PASS_HANDLE)
-			vfs_pass_handle(IPC_GET_ARG4(*call),
-			    IPC_GET_ARG5(*call), (int) IPC_GET_ARG2(*call));
+			vfs_pass_handle(
+			    (task_id_t) MERGE_LOUP32(IPC_GET_ARG4(*call),
+			    IPC_GET_ARG5(*call)), call->in_task_id,
+			    (int) IPC_GET_ARG2(*call));
 		break;
 	default:
Index: uspace/srv/vfs/vfs.h
===================================================================
--- uspace/srv/vfs/vfs.h	(revision 42a619b240617c4f0e4dd04ddf2366f3c5a0709a)
+++ uspace/srv/vfs/vfs.h	(revision e2ab36f1e7abed06e401610969fa967f43774dd8)
@@ -41,4 +41,5 @@
 #include <bool.h>
 #include <ipc/vfs.h>
+#include <task.h>
 
 #ifndef dprintf
@@ -188,5 +189,5 @@
 extern void vfs_client_data_destroy(void *);
 
-extern void vfs_pass_handle(sysarg_t, sysarg_t, int);
+extern void vfs_pass_handle(task_id_t, task_id_t, int);
 extern int vfs_wait_handle_internal(void);
 
Index: uspace/srv/vfs/vfs_file.c
===================================================================
--- uspace/srv/vfs/vfs_file.c	(revision 42a619b240617c4f0e4dd04ddf2366f3c5a0709a)
+++ uspace/srv/vfs/vfs_file.c	(revision e2ab36f1e7abed06e401610969fa967f43774dd8)
@@ -44,4 +44,5 @@
 #include <fibril_synch.h>
 #include <adt/list.h>
+#include <task.h>
 #include "vfs.h"
 
@@ -346,5 +347,5 @@
 }
 
-void vfs_pass_handle(sysarg_t donor_hash, sysarg_t acceptor_hash, int donor_fd)
+void vfs_pass_handle(task_id_t donor_id, task_id_t acceptor_id, int donor_fd)
 {
 	vfs_client_data_t *donor_data = NULL;
@@ -355,5 +356,5 @@
 	int acceptor_fd;
 
-	acceptor_data = async_get_client_data_by_hash(acceptor_hash);
+	acceptor_data = async_get_client_data_by_id(acceptor_id);
 	if (!acceptor_data)
 		return;
@@ -365,5 +366,5 @@
 	bh->handle = -1;
 
-	donor_data = async_get_client_data_by_hash(donor_hash);
+	donor_data = async_get_client_data_by_id(donor_id);
 	if (!donor_data)
 		goto out;
@@ -402,7 +403,7 @@
 
 	if (donor_data)
-		async_put_client_data_by_hash(donor_hash);
+		async_put_client_data_by_id(donor_id);
 	if (acceptor_data)
-		async_put_client_data_by_hash(acceptor_hash);
+		async_put_client_data_by_id(acceptor_id);
 	if (donor_file)
 		_vfs_file_put(donor_data, donor_file);
