Index: uspace/lib/c/generic/async.c
===================================================================
--- uspace/lib/c/generic/async.c	(revision 26fbb7bb55973f371e4f7dd97f935b295e1fd3cb)
+++ uspace/lib/c/generic/async.c	(revision 455f190e4b0862368809250e0ad9bfb7504cfe9a)
@@ -201,10 +201,4 @@
 {
 	async_client_data_destroy = dtor;
-}
-
-void *async_get_client_data(void)
-{
-	assert(fibril_connection);
-	return fibril_connection->client->data;
 }
 
@@ -626,4 +620,33 @@
 		free(client);
 	}
+}
+
+void *async_get_client_data(void)
+{
+	assert(fibril_connection);
+	return fibril_connection->client->data;
+}
+
+void *async_get_client_data_by_hash(sysarg_t client_hash)
+{
+	client_t *client = async_client_get(client_hash, false);
+	if (!client)
+		return NULL;
+	if (!client->data) {
+		async_client_put(client);
+		return NULL;
+	}
+
+	return client->data;
+}
+
+void async_put_client_data_by_hash(sysarg_t client_hash)
+{
+	client_t *client = async_client_get(client_hash, false);
+
+	assert(client);
+	assert(client->data);
+
+	async_client_put(client);
 }
 
Index: uspace/lib/c/include/async.h
===================================================================
--- uspace/lib/c/include/async.h	(revision 26fbb7bb55973f371e4f7dd97f935b295e1fd3cb)
+++ uspace/lib/c/include/async.h	(revision 455f190e4b0862368809250e0ad9bfb7504cfe9a)
@@ -186,4 +186,6 @@
 extern void async_set_client_data_destructor(async_client_data_dtor_t);
 extern void *async_get_client_data(void);
+extern void *async_get_client_data_by_hash(sysarg_t);
+extern void async_put_client_data_by_hash(sysarg_t);
 
 extern void async_set_client_connection(async_client_conn_t);
