Index: uspace/lib/c/generic/async.c
===================================================================
--- uspace/lib/c/generic/async.c	(revision 46eec3b53871d0ac0060777d9d112b18a269c0d3)
+++ uspace/lib/c/generic/async.c	(revision 8526e5851735f721474fd66288fa0bd2ee19ad96)
@@ -541,5 +541,5 @@
 	client_t *cl;
 	link_t *lnk;
-	void *unref_client_data = NULL;
+	bool destroy = false;
 
 	/*
@@ -587,11 +587,13 @@
 	if (--cl->refcnt == 0) {
 		hash_table_remove(&client_hash_table, &key, 1);
-		unref_client_data = cl->data;
+		destroy = true;
+	}
+	futex_up(&async_futex);
+
+	if (destroy) {
+		if (cl->data)
+			async_client_data_destroy(cl->data);
 		free(cl);
 	}
-	futex_up(&async_futex);
-
-	if (unref_client_data)
-		async_client_data_destroy(unref_client_data);
 
 	/*
