Index: kernel/generic/src/ipc/ops/conctmeto.c
===================================================================
--- kernel/generic/src/ipc/ops/conctmeto.c	(revision b1c57a828cb73794beb6a309f5ec0199ca75ecc2)
+++ kernel/generic/src/ipc/ops/conctmeto.c	(revision eab96896da017b09ffd9ad8ca4def6bae35917b6)
@@ -44,4 +44,6 @@
 	int newphid = phone_alloc(TASK);
 
+	/* Remember the phoneid or the error. */
+	call->priv = newphid;
 	if (newphid < 0)
 		return ELIMIT;
@@ -49,5 +51,4 @@
 	/* Set arg5 for server */
 	IPC_SET_ARG5(call->data, (sysarg_t) &TASK->phones[newphid]);
-	call->priv = newphid;
 
 	return EOK;
@@ -73,8 +74,13 @@
 static int answer_process(call_t *answer)
 {
-	if (IPC_GET_RETVAL(answer->data))
+	if (IPC_GET_RETVAL(answer->data) && ((int) answer->priv >= 0)) {
+		/*
+		 * Something went wrong and there is a phone that needs to be
+		 * deallocated.
+		 */
 		phone_dealloc(answer->priv);
-	else
+	} else {
 		IPC_SET_ARG5(answer->data, answer->priv);
+	}
 	
 	return EOK;
