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 26ec91c2700ad1e6c97200450d94524ff4e27463)
@@ -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);
 		}
 	}
