Index: uspace/lib/libc/generic/fibril_sync.c
===================================================================
--- uspace/lib/libc/generic/fibril_sync.c	(revision cadfa8e37bd57b0ecdb6ecb56bf3e1e89431dced)
+++ uspace/lib/libc/generic/fibril_sync.c	(revision 854ad230c0123e578e67c3a279294dd30b0568eb)
@@ -66,6 +66,11 @@
 	futex_down(&async_futex);
 	if (fm->counter-- <= 0) {
-		fibril_t *f = (fibril_t *) fibril_get_id();
-		list_append(&f->link, &fm->waiters);
+		awaiter_t wdata;
+
+		wdata.fid = fibril_get_id();
+		wdata.active = false;
+		wdata.wu_event.inlist = true;
+		link_initialize(&wdata.wu_event.link);
+		list_append(&wdata.wu_event.link, &fm->waiters);
 		fibril_switch(FIBRIL_TO_MANAGER);
 	} else {
@@ -93,11 +98,12 @@
 	if (fm->counter++ < 0) {
 		link_t *tmp;
-		fibril_t *f;
+		awaiter_t *wdp;
 	
 		assert(!list_empty(&fm->waiters));
 		tmp = fm->waiters.next;
-		f = list_get_instance(tmp, fibril_t, link);
-		list_remove(&f->link);
-		fibril_add_ready((fid_t) f);
+		wdp = list_get_instance(tmp, awaiter_t, wu_event.link);
+		wdp->wu_event.inlist = false;
+		list_remove(&wdp->wu_event.link);
+		fibril_add_ready(wdp->fid);
 		optimize_execution_power();
 	}
