Index: uspace/srv/audio/hound/audio_data.c
===================================================================
--- uspace/srv/audio/hound/audio_data.c	(revision c718bdada0e16b36b6f0f68df54a3ee343f91e49)
+++ uspace/srv/audio/hound/audio_data.c	(revision df2e5514fa8f0044ee3ce752a6fd5cf72425718e)
@@ -36,4 +36,5 @@
 #include <macros.h>
 #include <stdlib.h>
+#include <str.h>
 
 #include "audio_data.h"
@@ -50,5 +51,5 @@
     pcm_format_t format)
 {
-	audio_data_t *adata = malloc(sizeof(audio_data_t));
+	audio_data_t *adata = malloc(sizeof(audio_data_t) + size);
 	if (adata) {
 		unsigned overflow = size % pcm_format_frame_size(&format);
@@ -56,6 +57,6 @@
 			log_warning("Data not a multiple of frame size, "
 			    "clipping.");
-
-		adata->data = data;
+		uint8_t *d = ((uint8_t *)adata) + offsetof(audio_data_t, data);
+		memcpy(d, data, size);
 		adata->size = size - overflow;
 		adata->format = format;
@@ -86,5 +87,4 @@
 	atomic_count_t refc = atomic_predec(&adata->refcount);
 	if (refc == 0) {
-		free(adata->data);
 		free(adata);
 	}
Index: uspace/srv/audio/hound/audio_data.h
===================================================================
--- uspace/srv/audio/hound/audio_data.h	(revision c718bdada0e16b36b6f0f68df54a3ee343f91e49)
+++ uspace/srv/audio/hound/audio_data.h	(revision df2e5514fa8f0044ee3ce752a6fd5cf72425718e)
@@ -45,6 +45,4 @@
 /** Reference counted audio buffer */
 typedef struct {
-	/** Audio data */
-	const void *data;
 	/** Size of the buffer pointer to by data */
 	size_t size;
@@ -53,4 +51,6 @@
 	/** Reference counter */
 	atomic_t refcount;
+	/** Audio data */
+	const uint8_t data[];
 } audio_data_t;
 
Index: uspace/srv/audio/hound/audio_sink.h
===================================================================
--- uspace/srv/audio/hound/audio_sink.h	(revision c718bdada0e16b36b6f0f68df54a3ee343f91e49)
+++ uspace/srv/audio/hound/audio_sink.h	(revision df2e5514fa8f0044ee3ce752a6fd5cf72425718e)
@@ -54,5 +54,5 @@
 	list_t connections;
 	/** Sink's name */
-	const char *name;
+	char *name;
 	/** Consumes data in this format */
 	pcm_format_t format;
Index: uspace/srv/audio/hound/audio_source.c
===================================================================
--- uspace/srv/audio/hound/audio_source.c	(revision c718bdada0e16b36b6f0f68df54a3ee343f91e49)
+++ uspace/srv/audio/hound/audio_source.c	(revision df2e5514fa8f0044ee3ce752a6fd5cf72425718e)
@@ -96,5 +96,5 @@
  * @return Error code.
  */
-errno_t audio_source_push_data(audio_source_t *source, const void *data,
+errno_t audio_source_push_data(audio_source_t *source, void *data,
     size_t size)
 {
Index: uspace/srv/audio/hound/audio_source.h
===================================================================
--- uspace/srv/audio/hound/audio_source.h	(revision c718bdada0e16b36b6f0f68df54a3ee343f91e49)
+++ uspace/srv/audio/hound/audio_source.h	(revision df2e5514fa8f0044ee3ce752a6fd5cf72425718e)
@@ -49,5 +49,5 @@
 	list_t connections;
 	/** String identifier */
-	const char *name;
+	char *name;
 	/** audio data format */
 	pcm_format_t format;
@@ -75,5 +75,5 @@
     const pcm_format_t *f);
 void audio_source_fini(audio_source_t *source);
-errno_t audio_source_push_data(audio_source_t *source, const void *data,
+errno_t audio_source_push_data(audio_source_t *source, void *data,
     size_t size);
 static inline const pcm_format_t *audio_source_format(const audio_source_t *s)
Index: uspace/srv/audio/hound/hound.c
===================================================================
--- uspace/srv/audio/hound/hound.c	(revision c718bdada0e16b36b6f0f68df54a3ee343f91e49)
+++ uspace/srv/audio/hound/hound.c	(revision df2e5514fa8f0044ee3ce752a6fd5cf72425718e)
@@ -414,5 +414,5 @@
  * @return Error code.
  */
-errno_t hound_list_sources(hound_t *hound, const char ***list, size_t *size)
+errno_t hound_list_sources(hound_t *hound, char ***list, size_t *size)
 {
 	assert(hound);
@@ -428,5 +428,5 @@
 		return EOK;
 	}
-	const char **names = calloc(count, sizeof(char *));
+	char **names = calloc(count, sizeof(char *));
 	errno_t ret = names ? EOK : ENOMEM;
 	for (unsigned long i = 0; i < count && ret == EOK; ++i) {
@@ -456,5 +456,5 @@
  * @return Error code.
  */
-errno_t hound_list_sinks(hound_t *hound, const char ***list, size_t *size)
+errno_t hound_list_sinks(hound_t *hound, char ***list, size_t *size)
 {
 	assert(hound);
@@ -470,5 +470,5 @@
 		return EOK;
 	}
-	const char **names = calloc(count, sizeof(char *));
+	char **names = calloc(count, sizeof(char *));
 	errno_t ret = names ? EOK : ENOMEM;
 	for (size_t i = 0; i < count && ret == EOK; ++i) {
Index: uspace/srv/audio/hound/hound.h
===================================================================
--- uspace/srv/audio/hound/hound.h	(revision c718bdada0e16b36b6f0f68df54a3ee343f91e49)
+++ uspace/srv/audio/hound/hound.h	(revision df2e5514fa8f0044ee3ce752a6fd5cf72425718e)
@@ -73,6 +73,6 @@
 errno_t hound_add_source(hound_t *hound, audio_source_t *source);
 errno_t hound_add_sink(hound_t *hound, audio_sink_t *sink);
-errno_t hound_list_sources(hound_t *hound, const char ***list, size_t *size);
-errno_t hound_list_sinks(hound_t *hound, const char ***list, size_t *size);
+errno_t hound_list_sources(hound_t *hound, char ***list, size_t *size);
+errno_t hound_list_sinks(hound_t *hound, char ***list, size_t *size);
 errno_t hound_list_connections(hound_t *hound, const char ***sources,
     const char ***sinks, size_t *size);
Index: uspace/srv/audio/hound/iface.c
===================================================================
--- uspace/srv/audio/hound/iface.c	(revision c718bdada0e16b36b6f0f68df54a3ee343f91e49)
+++ uspace/srv/audio/hound/iface.c	(revision df2e5514fa8f0044ee3ce752a6fd5cf72425718e)
@@ -86,5 +86,5 @@
 }
 
-static errno_t iface_get_list(void *server, const char ***list, size_t *size,
+static errno_t iface_get_list(void *server, char ***list, size_t *size,
     const char *connection, int flags)
 {
Index: uspace/srv/devman/devman.h
===================================================================
--- uspace/srv/devman/devman.h	(revision c718bdada0e16b36b6f0f68df54a3ee343f91e49)
+++ uspace/srv/devman/devman.h	(revision df2e5514fa8f0044ee3ce752a6fd5cf72425718e)
@@ -80,5 +80,5 @@
 	char *name;
 	/** Path to the driver's binary. */
-	const char *binary_path;
+	char *binary_path;
 	/** List of device ids for device-to-driver matching. */
 	match_id_list_t match_ids;
