Index: uspace/lib/c/generic/async.c
===================================================================
--- uspace/lib/c/generic/async.c	(revision 8fa6d4c762e1b9580258f94ee5d43160d33054ac)
+++ uspace/lib/c/generic/async.c	(revision 3711e7ecc46c08bafffe8145e4284827e7a1deb0)
@@ -1847,8 +1847,4 @@
 	fibril_mutex_lock(&async_sess_mutex);
 	
-	int rc = async_hangup_internal(sess->phone);
-	if (rc == EOK)
-		free(sess);
-	
 	while (!list_empty(&sess->exch_list)) {
 		exch = (async_exch_t *)
@@ -1861,4 +1857,7 @@
 		free(exch);
 	}
+
+	int rc = async_hangup_internal(sess->phone);
+	free(sess);
 	
 	fibril_mutex_unlock(&async_sess_mutex);
