Index: uspace/lib/usb/src/ddfiface.c
===================================================================
--- uspace/lib/usb/src/ddfiface.c	(revision 3562cd18af2a2bc0b0bd846ced6fe377a0207039)
+++ uspace/lib/usb/src/ddfiface.c	(revision 1e6dc5b53b33bd0abfbfab8a742f6a9f8c664cee)
@@ -39,4 +39,5 @@
 #include <usb/hc.h>
 #include <usb/debug.h>
+#include <usb/dev/hub.h>
 #include <errno.h>
 #include <assert.h>
@@ -51,5 +52,5 @@
 usb_iface_t  usb_iface_hub_child_impl = {
 	.get_hc_handle = usb_iface_get_hc_handle_device_impl,
-	.get_address = usb_iface_get_address_set_my_handle_impl
+	.get_address = usb_iface_get_address_from_device_data,
 };
 
@@ -131,11 +132,15 @@
  * @return Error code.
  */
-int usb_iface_get_address_set_my_handle_impl(ddf_fun_t *fun,
+int usb_iface_get_address_from_device_data(ddf_fun_t *fun,
     devman_handle_t handle, usb_address_t *address)
 {
-	if (handle == 0) {
-		handle = fun->handle;
-	}
-	return usb_iface_get_address_forward_impl(fun, handle, address);
+	assert(fun);
+	assert(handle == 0);
+	assert(fun->driver_data);
+	usb_hub_attached_device_t *device = fun->driver_data;
+	assert(device->fun == fun);
+	if (address)
+		*address = device->address;
+	return EOK;
 }
 
