Index: kernel/generic/include/ipc/ipc.h
===================================================================
--- kernel/generic/include/ipc/ipc.h	(revision a55d5f9fbe9f149843781206c69705643f929991)
+++ kernel/generic/include/ipc/ipc.h	(revision 3115355436bd3be893ea7ad92686758cb9124a41)
@@ -175,13 +175,11 @@
 
 /** Send data to another address space over IPC.
- * - ARG1 - destination address space virtual address, may be overriden by the
- *	    recipient
- * - ARG2 - source address space virtual address
- * - ARG3 - size of data to be copied, may be overriden by the recipient
+ * - ARG1 - source address space virtual address
+ * - ARG2 - size of data to be copied, may be overriden by the recipient
  *
  * on answer, the recipient must set:
  *
  * - ARG1 - final destination address space virtual address
- * - ARG3 - final size of data to be copied
+ * - ARG2 - final size of data to be copied
  */
 #define IPC_M_DATA_WRITE	6
Index: kernel/generic/src/ipc/sysipc.c
===================================================================
--- kernel/generic/src/ipc/sysipc.c	(revision a55d5f9fbe9f149843781206c69705643f929991)
+++ kernel/generic/src/ipc/sysipc.c	(revision 3115355436bd3be893ea7ad92686758cb9124a41)
@@ -273,6 +273,6 @@
 
 			dst = IPC_GET_ARG1(answer->data);
-			size = IPC_GET_ARG3(answer->data);
-			max_size = IPC_GET_ARG3(*olddata);
+			size = IPC_GET_ARG2(answer->data);
+			max_size = IPC_GET_ARG2(*olddata);
 
 			if (size <= max_size) {
@@ -326,6 +326,6 @@
 		break;
 	case IPC_M_DATA_WRITE:
-		src = IPC_GET_ARG2(call->data);
-		size = IPC_GET_ARG3(call->data);
+		src = IPC_GET_ARG1(call->data);
+		size = IPC_GET_ARG2(call->data);
 		
 		if ((size <= 0) || (size > DATA_XFER_LIMIT))
