Index: kernel/generic/src/ipc/ipc.c
===================================================================
--- kernel/generic/src/ipc/ipc.c	(revision aa028db7e1911a66316c594e879ccad73b05f76b)
+++ kernel/generic/src/ipc/ipc.c	(revision c2ab3f4e8eab286882ede12c07984b3ad82389b6)
@@ -218,9 +218,12 @@
 	answerbox_t *callerbox = call->callerbox;
 	bool do_lock = ((!selflocked) || callerbox != (&TASK->answerbox));
+	ipl_t ipl;
 
 	/* Count sent answer */
+	ipl = interrupts_disable();
 	spinlock_lock(&TASK->lock);
 	TASK->ipc_info.answer_sent++;
 	spinlock_unlock(&TASK->lock);
+	interrupts_restore(ipl);
 
 	call->flags |= IPC_CALL_ANSWERED;
@@ -281,8 +284,12 @@
 static void _ipc_call(phone_t *phone, answerbox_t *box, call_t *call)
 {
+	ipl_t ipl;
+
 	/* Count sent ipc call */
+	ipl = interrupts_disable();
 	spinlock_lock(&TASK->lock);
 	TASK->ipc_info.call_sent++;
 	spinlock_unlock(&TASK->lock);
+	interrupts_restore(ipl);
 
 	if (!(call->flags & IPC_CALL_FORWARDED)) {
@@ -386,8 +393,12 @@
 int ipc_forward(call_t *call, phone_t *newphone, answerbox_t *oldbox, int mode)
 {
+	ipl_t ipl;
+
 	/* Count forwarded calls */
+	ipl = interrupts_disable();
 	spinlock_lock(&TASK->lock);
 	TASK->ipc_info.forwarded++;
 	spinlock_unlock(&TASK->lock);
+	interrupts_restore(ipl);
 
 	spinlock_lock(&oldbox->lock);
@@ -680,5 +691,7 @@
 	call_t *call;
 	link_t *tmp;
+	ipl_t ipl;
 	
+	ipl = interrupts_disable();
 	spinlock_lock(&tasks_lock);
 	task = task_find_by_id(taskid);
@@ -686,6 +699,8 @@
 		spinlock_lock(&task->lock);
 	spinlock_unlock(&tasks_lock);
-	if (!task)
+	if (!task) {
+		interrupts_restore(ipl);
 		return;
+	}
 
 	/* Print opened phones & details */
@@ -770,4 +785,5 @@
 	spinlock_unlock(&task->answerbox.lock);
 	spinlock_unlock(&task->lock);
+	interrupts_restore(ipl);
 }
 
