Index: kernel/generic/src/ipc/sysipc.c
===================================================================
--- kernel/generic/src/ipc/sysipc.c	(revision 174156fd1cf321a6363777352073d05829467b2f)
+++ kernel/generic/src/ipc/sysipc.c	(revision eec201dc0da41d601ba79f79b51c8f95f25d461e)
@@ -202,4 +202,5 @@
 			kobject_put(phone->kobject);
 			phone->state = IPC_PHONE_SLAMMED;
+			phone->label = 0;
 			irq_spinlock_unlock(&phone->callee->lock, true);
 		}
@@ -386,5 +387,5 @@
 
 	/* Set the user-defined label */
-	call->data.label = label;
+	call->data.answer_label = label;
 
 	errno_t res = request_preprocess(call, kobj->phone);
@@ -430,5 +431,5 @@
 
 	/* Set the user-defined label */
-	call->data.label = label;
+	call->data.answer_label = label;
 
 	errno_t res = request_preprocess(call, kobj->phone);
@@ -504,7 +505,11 @@
 	if (!method_is_immutable(IPC_GET_IMETHOD(call->data))) {
 		if (method_is_system(IPC_GET_IMETHOD(call->data))) {
-			if (IPC_GET_IMETHOD(call->data) == IPC_M_CONNECT_TO_ME)
-				phone_dealloc((cap_phone_handle_t)
-				    IPC_GET_ARG5(call->data));
+			if (IPC_GET_IMETHOD(call->data) ==
+			    IPC_M_CONNECT_TO_ME) {
+				kobject_put((kobject_t *) call->priv);
+				call->priv = 0;
+				cap_free(TASK,
+				    (cap_handle_t) IPC_GET_ARG5(call->data));
+			}
 
 			IPC_SET_ARG1(call->data, imethod);
@@ -771,6 +776,6 @@
 	call->data.flags = call->flags;
 	if (call->flags & IPC_CALL_NOTIF) {
-		/* Set in_phone_hash to the interrupt counter */
-		call->data.phone = (void *) call->priv;
+		/* Set the request_label to the interrupt counter */
+		call->data.request_label = (sysarg_t) call->priv;
 
 		call->data.cap_handle = CAP_NIL;
