Index: uspace/lib/c/generic/async.c
===================================================================
--- uspace/lib/c/generic/async.c	(revision 0f4532eacacffee1dfacd43bc26f46e3dc904200)
+++ uspace/lib/c/generic/async.c	(revision 1a5b2521ea58a25aa1f13d0850fa06ae93fba965)
@@ -1658,19 +1658,20 @@
 }
 
-/** Shift arguments for new connections left by one.
+/** Set arguments for new connections.
  *
  * FIXME This is an ugly hack to work around the problem that parallel
  * exchanges are implemented using parallel connections. When we create
- * such a session via a naming server, the naming server shifts the
- * arguments for the initial connection, but not for the latter connections.
+ * a callback session, the framework does not know arguments for the new
+ * connections.
  *
  * The proper solution seems to be to implement parallel exchanges using
  * tagging.
  */
-void async_sess_args_shift(async_sess_t *sess)
-{
-	sess->arg1 = sess->arg2;
-	sess->arg2 = sess->arg3;
-	sess->arg3 = 0;
+void async_sess_args_set(async_sess_t *sess, sysarg_t arg1, sysarg_t arg2,
+    sysarg_t arg3)
+{
+	sess->arg1 = arg1;
+	sess->arg2 = arg2;
+	sess->arg3 = arg3;
 }
 
