Index: uspace/srv/audio/hound/audio_sink.c
===================================================================
--- uspace/srv/audio/hound/audio_sink.c	(revision 36795edf59b53d3f30384d83e6a8042eec3ea891)
+++ uspace/srv/audio/hound/audio_sink.c	(revision 3fd38b24aad2f700c8aee5299ddf03c82dd4a2c7)
@@ -36,4 +36,5 @@
 #include <assert.h>
 #include <errno.h>
+#include <fibril_synch.h>
 #include <stdlib.h>
 #include <str.h>
@@ -64,4 +65,5 @@
 		return EINVAL;
 	link_initialize(&sink->link);
+	fibril_mutex_initialize(&sink->lock);
 	list_initialize(&sink->connections);
 	sink->name = str_dup(name);
@@ -139,4 +141,5 @@
 
 	pcm_format_silence(dest, size, &sink->format);
+	fibril_mutex_lock(&sink->lock);
 	list_foreach(sink->connections, sink_link, connection_t, conn) {
 		const errno_t ret = connection_add_source_data(
@@ -147,4 +150,5 @@
 		}
 	}
+	fibril_mutex_unlock(&sink->lock);
 }
 
Index: uspace/srv/audio/hound/audio_sink.h
===================================================================
--- uspace/srv/audio/hound/audio_sink.h	(revision 36795edf59b53d3f30384d83e6a8042eec3ea891)
+++ uspace/srv/audio/hound/audio_sink.h	(revision 3fd38b24aad2f700c8aee5299ddf03c82dd4a2c7)
@@ -41,4 +41,5 @@
 #include <stdbool.h>
 #include <fibril.h>
+#include <fibril_synch.h>
 #include <pcm/format.h>
 
@@ -51,4 +52,6 @@
 	/** Link in hound's sink list */
 	link_t link;
+	/** Protect sink including list of connections */
+	fibril_mutex_t lock;
 	/** List of all related connections */
 	list_t connections;
Index: uspace/srv/audio/hound/connection.c
===================================================================
--- uspace/srv/audio/hound/connection.c	(revision 36795edf59b53d3f30384d83e6a8042eec3ea891)
+++ uspace/srv/audio/hound/connection.c	(revision 3fd38b24aad2f700c8aee5299ddf03c82dd4a2c7)
@@ -61,5 +61,7 @@
 		conn->source = source;
 		list_append(&conn->source_link, &source->connections);
+		fibril_mutex_lock(&sink->lock);
 		list_append(&conn->sink_link, &sink->connections);
+		fibril_mutex_unlock(&sink->lock);
 		audio_sink_set_format(sink, audio_source_format(source));
 		if (source->connection_change)
@@ -83,5 +85,7 @@
 	assert(!link_in_use(&connection->hound_link));
 	list_remove(&connection->source_link);
+	fibril_mutex_lock(&connection->sink->lock);
 	list_remove(&connection->sink_link);
+	fibril_mutex_unlock(&connection->sink->lock);
 	if (connection->sink && connection->sink->connection_change)
 		connection->sink->connection_change(connection->sink, false);
Index: uspace/srv/audio/hound/hound.c
===================================================================
--- uspace/srv/audio/hound/hound.c	(revision 36795edf59b53d3f30384d83e6a8042eec3ea891)
+++ uspace/srv/audio/hound/hound.c	(revision 3fd38b24aad2f700c8aee5299ddf03c82dd4a2c7)
@@ -126,4 +126,5 @@
 	assert(fibril_mutex_is_locked(&hound->list_guard));
 	log_verbose("Removing sink '%s'.", sink->name);
+	fibril_mutex_lock(&sink->lock);
 	if (!list_empty(&sink->connections))
 		log_warning("Removing sink '%s' while still connected.", sink->name);
@@ -135,4 +136,5 @@
 	}
 	list_remove(&sink->link);
+	fibril_mutex_unlock(&sink->lock);
 }
 
