Index: kernel/generic/src/ipc/sysipc.c
===================================================================
--- kernel/generic/src/ipc/sysipc.c	(revision e2ab36f1e7abed06e401610969fa967f43774dd8)
+++ kernel/generic/src/ipc/sysipc.c	(revision 36b16bc4049fcc40e8ec4b5d1fcbcf9f46a96553)
@@ -253,6 +253,7 @@
 			/* The connection was accepted */
 			phone_connect(phoneid, &answer->sender->answerbox);
-			/* Set 'task hash' as arg4 of response */
-			IPC_SET_ARG4(answer->data, (sysarg_t) TASK);
+			/* Set 'task ID' as arg3 and arg4 of response */
+			IPC_SET_ARG3(answer->data, LOWER32(TASK->taskid));
+			IPC_SET_ARG4(answer->data, UPPER32(TASK->taskid));
 			/* Set 'phone hash' as arg5 of response */
 			IPC_SET_ARG5(answer->data,
Index: uspace/lib/c/generic/async.c
===================================================================
--- uspace/lib/c/generic/async.c	(revision e2ab36f1e7abed06e401610969fa967f43774dd8)
+++ uspace/lib/c/generic/async.c	(revision 36b16bc4049fcc40e8ec4b5d1fcbcf9f46a96553)
@@ -1472,13 +1472,17 @@
 		return ENOENT;
 	
-	sysarg_t task_hash;
+	task_id_t task_id;
+	sysarg_t task_id_lo;
+	sysarg_t task_id_hi;
 	sysarg_t phone_hash;
 	int rc = async_req_3_5(exch, IPC_M_CONNECT_TO_ME, arg1, arg2, arg3,
-	    NULL, NULL, NULL, &task_hash, &phone_hash);
+	    NULL, NULL, &task_id_lo, &task_id_hi, &phone_hash);
 	if (rc != EOK)
 		return rc;
+
+	task_id = (task_id_t) MERGE_LOUP32(task_id_lo, task_id_hi);
 	
 	if (client_receiver != NULL)
-		async_new_connection(task_hash, phone_hash, 0, NULL,
+		async_new_connection(task_id, phone_hash, 0, NULL,
 		    client_receiver, carg);
 	
