Index: kernel/generic/src/ipc/ipc.c
===================================================================
--- kernel/generic/src/ipc/ipc.c	(revision 431c4028beb348e60a9c7a784a49e94fb44766cc)
+++ kernel/generic/src/ipc/ipc.c	(revision e5f5ce03f9fc114c279f31bd164daf4e6dd8425e)
@@ -66,6 +66,8 @@
 answerbox_t *ipc_phone_0 = NULL;
 
-static slab_cache_t *ipc_call_slab;
-static slab_cache_t *ipc_answerbox_slab;
+static slab_cache_t *call_slab;
+static slab_cache_t *answerbox_slab;
+
+slab_cache_t *phone_slab = NULL; 
 
 /** Initialize a call structure.
@@ -95,5 +97,5 @@
 		if (call->buffer)
 			free(call->buffer);
-		slab_free(ipc_call_slab, call);
+		slab_free(call_slab, call);
 	}
 }
@@ -112,5 +114,5 @@
 call_t *ipc_call_alloc(unsigned int flags)
 {
-	call_t *call = slab_alloc(ipc_call_slab, flags);
+	call_t *call = slab_alloc(call_slab, flags);
 	if (call) {
 		_ipc_call_init(call);
@@ -201,5 +203,5 @@
 int ipc_call_sync(phone_t *phone, call_t *request)
 {
-	answerbox_t *mybox = slab_alloc(ipc_answerbox_slab, 0);
+	answerbox_t *mybox = slab_alloc(answerbox_slab, 0);
 	ipc_answerbox_init(mybox, TASK);
 	
@@ -209,5 +211,5 @@
 	int rc = ipc_call(phone, request);
 	if (rc != EOK) {
-		slab_free(ipc_answerbox_slab, mybox);
+		slab_free(answerbox_slab, mybox);
 		return rc;
 	}
@@ -256,5 +258,5 @@
 	assert(!answer || request == answer);
 	
-	slab_free(ipc_answerbox_slab, mybox);
+	slab_free(answerbox_slab, mybox);
 	return rc;
 }
@@ -854,8 +856,10 @@
 void ipc_init(void)
 {
-	ipc_call_slab = slab_cache_create("call_t", sizeof(call_t), 0, NULL,
+	call_slab = slab_cache_create("call_t", sizeof(call_t), 0, NULL,
 	    NULL, 0);
-	ipc_answerbox_slab = slab_cache_create("answerbox_t",
-	    sizeof(answerbox_t), 0, NULL, NULL, 0);
+	phone_slab = slab_cache_create("phone_t", sizeof(phone_t), 0, NULL,
+	    NULL, 0);
+	answerbox_slab = slab_cache_create("answerbox_t", sizeof(answerbox_t),
+	    0, NULL, NULL, 0);
 }
 
Index: kernel/generic/src/ipc/ipcrsc.c
===================================================================
--- kernel/generic/src/ipc/ipcrsc.c	(revision 431c4028beb348e60a9c7a784a49e94fb44766cc)
+++ kernel/generic/src/ipc/ipcrsc.c	(revision e5f5ce03f9fc114c279f31bd164daf4e6dd8425e)
@@ -208,5 +208,5 @@
 	int handle = cap_alloc(task);
 	if (handle >= 0) {
-		phone_t *phone = malloc(sizeof(phone_t), FRAME_ATOMIC);
+		phone_t *phone = slab_alloc(phone_slab, FRAME_ATOMIC);
 		if (!phone) {
 			cap_free(TASK, handle);
@@ -248,5 +248,5 @@
 	assert(phone->state == IPC_PHONE_CONNECTING);
 	
-	free(phone);
+	slab_free(phone_slab, phone);
 	cap_free(TASK, handle);
 }
