Index: generic/src/ipc/sysipc.c
===================================================================
--- generic/src/ipc/sysipc.c	(revision d6e5cbc6f5fd409a91c10cc64f7841774bcf8b94)
+++ generic/src/ipc/sysipc.c	(revision 41d33aca6323fda79c1a11fc827a1a73ba58c85f)
@@ -137,4 +137,5 @@
 		if (!IPC_GET_RETVAL(answer->data)) { /* Accepted, handle as_area receipt */
 			ipl_t ipl;
+			int rc;
 			as_t *as;
 			
@@ -145,6 +146,8 @@
 			interrupts_restore(ipl);
 			
-			return as_area_share(as, IPC_GET_ARG1(*olddata), IPC_GET_ARG2(*olddata),
-					     AS, IPC_GET_ARG1(answer->data), IPC_GET_ARG3(*olddata));
+			rc = as_area_share(as, IPC_GET_ARG1(*olddata), IPC_GET_ARG2(*olddata),
+					   AS, IPC_GET_ARG1(answer->data), IPC_GET_ARG3(*olddata));
+			IPC_SET_RETVAL(answer->data, rc);
+			return rc;
 		}
 	} else if (IPC_GET_METHOD(*olddata) == IPC_M_AS_AREA_RECV) {
@@ -161,5 +164,5 @@
 			
 			rc = as_area_share(AS, IPC_GET_ARG1(answer->data), IPC_GET_ARG2(*olddata),
-					   as, IPC_GET_ARG1(*olddata), IPC_GET_ARG3(*olddata));
+					   as, IPC_GET_ARG1(*olddata), IPC_GET_ARG2(answer->data));
 			IPC_SET_RETVAL(answer->data, rc);
 		}
