Index: uspace/lib/usbhost/src/endpoint.c
===================================================================
--- uspace/lib/usbhost/src/endpoint.c	(revision 1a025171dce783accd2bf90e64bd6ee89ca65990)
+++ uspace/lib/usbhost/src/endpoint.c	(revision 90dd59dcdd7810ff0b649b59ab64cc30c6b3d0de)
@@ -53,4 +53,8 @@
 		instance->toggle = 0;
 		instance->active = false;
+		instance->hc_data.data = NULL;
+		instance->hc_data.data_dtor = NULL;
+		instance->hc_data.toggle_get = NULL;
+		instance->hc_data.toggle_set = NULL;
 		fibril_mutex_initialize(&instance->guard);
 		fibril_condvar_initialize(&instance->avail);
@@ -64,12 +68,18 @@
 	assert(instance);
 	assert(!instance->active);
+	if (instance->hc_data.data) {
+		assert(instance->hc_data.data_dtor);
+		instance->hc_data.data_dtor(instance->hc_data.data);
+	}
 	free(instance);
 }
 /*----------------------------------------------------------------------------*/
 void endpoint_set_hc_data(endpoint_t *instance,
-    void *data, int (*toggle_get)(void *), void (*toggle_set)(void *, int))
+    void *data, void (*data_dtor)(void *),
+    int (*toggle_get)(void *), void (*toggle_set)(void *, int))
 {
 	assert(instance);
 	instance->hc_data.data = data;
+	instance->hc_data.data_dtor = data_dtor;
 	instance->hc_data.toggle_get = toggle_get;
 	instance->hc_data.toggle_set = toggle_set;
