Index: kernel/generic/src/ipc/kbox.c
===================================================================
--- kernel/generic/src/ipc/kbox.c	(revision e2fcdb15a346346bb5ae9143203e376ce5a4dc9d)
+++ kernel/generic/src/ipc/kbox.c	(revision c6f0e3a2d4056ec77f60764b9555ecdaf24c62d6)
@@ -126,4 +126,6 @@
 	ipc_answer(&TASK->kb.box, call);
 
+	mutex_lock(&TASK->kb.cleanup_lock);
+
 	ipl = interrupts_disable();
 	spinlock_lock(&TASK->lock);
@@ -136,5 +138,4 @@
 
 		/* Only detach kbox thread unless already terminating. */
-		mutex_lock(&TASK->kb.cleanup_lock);
 		if (TASK->kb.finished == false) {
 			/* Detach kbox thread so it gets freed from memory. */
@@ -142,5 +143,4 @@
 			TASK->kb.thread = NULL;
 		}
-		mutex_unlock(&TASK->kb.cleanup_lock);
 
 		LOG("Phone list is empty.");
@@ -153,4 +153,6 @@
 	spinlock_unlock(&TASK->lock);
 	interrupts_restore(ipl);
+
+	mutex_unlock(&TASK->kb.cleanup_lock);
 }
 
