Index: uspace/lib/c/generic/fibril_synch.c
===================================================================
--- uspace/lib/c/generic/fibril_synch.c	(revision 7f122e3870e33f0d019db459612b5911ef5f0d1d)
+++ uspace/lib/c/generic/fibril_synch.c	(revision 525df288cfe2c99c79f9e1d14ea53aec237940b0)
@@ -65,4 +65,6 @@
 void fibril_mutex_lock(fibril_mutex_t *fm)
 {
+	fibril_t *f = (fibril_t *) fibril_get_id();
+
 	futex_down(&async_futex);
 	if (fm->counter-- <= 0) {
@@ -74,7 +76,10 @@
 		link_initialize(&wdata.wu_event.link);
 		list_append(&wdata.wu_event.link, &fm->waiters);
+
+		f->waits_for = &fm->oi;
+
 		fibril_switch(FIBRIL_TO_MANAGER);
 	} else {
-		fm->oi.owned_by = (fibril_t *) fibril_get_id();
+		fm->oi.owned_by = f;
 		futex_up(&async_futex);
 	}
@@ -102,4 +107,5 @@
 		link_t *tmp;
 		awaiter_t *wdp;
+		fibril_t *f;
 	
 		assert(!list_empty(&fm->waiters));
@@ -108,5 +114,9 @@
 		wdp->active = true;
 		wdp->wu_event.inlist = false;
-		fm->oi.owned_by = (fibril_t *) wdp->fid;
+
+		f = (fibril_t *) wdp->fid;
+		fm->oi.owned_by = f;
+		f->waits_for = NULL;
+
 		list_remove(&wdp->wu_event.link);
 		fibril_add_ready(wdp->fid);
