Index: uspace/lib/c/generic/fibril_synch.c
===================================================================
--- uspace/lib/c/generic/fibril_synch.c	(revision 2a3214e79622fd100bc5588ff1b233dea739fc5c)
+++ uspace/lib/c/generic/fibril_synch.c	(revision 92e717c9d468d4db5d9376fe439bbfb40cb7f31e)
@@ -474,6 +474,8 @@
 		    timer->delay);
 		if (rc == ETIMEOUT) {
+			timer->state = fts_fired;
+			fibril_mutex_unlock(&timer->lock);
 			timer->fun(timer->arg);
-			timer->state = fts_fired;
+			fibril_mutex_lock(&timer->lock);
 		}
 	}
