Index: uspace/lib/usbhost/include/usb/host/endpoint.h
===================================================================
--- uspace/lib/usbhost/include/usb/host/endpoint.h	(revision 1a025171dce783accd2bf90e64bd6ee89ca65990)
+++ uspace/lib/usbhost/include/usb/host/endpoint.h	(revision e2976bbb4ebc8d239237d89b873dd15b927568ea)
@@ -56,4 +56,5 @@
 	struct {
 		void *data;
+		void (*data_dtor)(void*);
 		int (*toggle_get)(void *);
 		void (*toggle_set)(void *, int);
@@ -68,5 +69,6 @@
 
 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));
 
 void endpoint_clear_hc_data(endpoint_t *instance);
Index: uspace/lib/usbhost/src/endpoint.c
===================================================================
--- uspace/lib/usbhost/src/endpoint.c	(revision 1a025171dce783accd2bf90e64bd6ee89ca65990)
+++ uspace/lib/usbhost/src/endpoint.c	(revision e2976bbb4ebc8d239237d89b873dd15b927568ea)
@@ -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;
