Index: uspace/drv/bus/usb/usbmid/usbmid.c
===================================================================
--- uspace/drv/bus/usb/usbmid/usbmid.c	(revision cae002cccadb8f80b02e632090ca484bf19bd83a)
+++ uspace/drv/bus/usb/usbmid/usbmid.c	(revision eea3e39c84d40649f8c994cf924f850eabab33c6)
@@ -63,5 +63,5 @@
 static usb_iface_t child_usb_iface = {
 	.get_hc_handle = usb_iface_get_hc_handle_hub_child_impl,
-	.get_address = usb_iface_get_address_hub_impl,
+	.get_address = usb_iface_get_address_forward_impl,
 	.get_interface = usb_iface_get_interface_impl
 };
Index: uspace/lib/usb/include/usb/ddfiface.h
===================================================================
--- uspace/lib/usb/include/usb/ddfiface.h	(revision cae002cccadb8f80b02e632090ca484bf19bd83a)
+++ uspace/lib/usb/include/usb/ddfiface.h	(revision eea3e39c84d40649f8c994cf924f850eabab33c6)
@@ -40,10 +40,10 @@
 
 int usb_iface_get_hc_handle_hub_impl(ddf_fun_t *, devman_handle_t *);
-int usb_iface_get_address_hub_impl(ddf_fun_t *, devman_handle_t,
+int usb_iface_get_address_forward_impl(ddf_fun_t *, devman_handle_t,
     usb_address_t *);
 extern usb_iface_t usb_iface_hub_impl;
 
 int usb_iface_get_hc_handle_hub_child_impl(ddf_fun_t *, devman_handle_t *);
-int usb_iface_get_address_hub_child_impl(ddf_fun_t *, devman_handle_t,
+int usb_iface_get_address_set_my_handle_impl(ddf_fun_t *, devman_handle_t,
     usb_address_t *);
 extern usb_iface_t usb_iface_hub_child_impl;
Index: uspace/lib/usb/src/ddfiface.c
===================================================================
--- uspace/lib/usb/src/ddfiface.c	(revision cae002cccadb8f80b02e632090ca484bf19bd83a)
+++ uspace/lib/usb/src/ddfiface.c	(revision eea3e39c84d40649f8c994cf924f850eabab33c6)
@@ -45,5 +45,5 @@
 usb_iface_t  usb_iface_hub_impl = {
 	.get_hc_handle = usb_iface_get_hc_handle_hub_impl,
-	.get_address = usb_iface_get_address_hub_impl
+	.get_address = usb_iface_get_address_forward_impl,
 };
 
@@ -51,5 +51,5 @@
 usb_iface_t  usb_iface_hub_child_impl = {
 	.get_hc_handle = usb_iface_get_hc_handle_hub_child_impl,
-	.get_address = usb_iface_get_address_hub_child_impl
+	.get_address = usb_iface_get_address_set_my_handle_impl
 };
 
@@ -125,9 +125,9 @@
  * @return Error code.
  */
-int usb_iface_get_address_hub_impl(ddf_fun_t *fun, devman_handle_t handle,
+int usb_iface_get_address_forward_impl(ddf_fun_t *fun, devman_handle_t handle,
     usb_address_t *address)
 {
 	assert(fun);
-	
+
 	async_sess_t *parent_sess =
 	    devman_parent_device_connect(EXCHANGE_SERIALIZE, fun->handle,
@@ -135,20 +135,20 @@
 	if (!parent_sess)
 		return ENOMEM;
-	
+
 	async_exch_t *exch = async_exchange_begin(parent_sess);
-	
+
 	sysarg_t addr;
 	int rc = async_req_2_1(exch, DEV_IFACE_ID(USB_DEV_IFACE),
 	    IPC_M_USB_GET_ADDRESS, handle, &addr);
-	
+
 	async_exchange_end(exch);
 	async_hangup(parent_sess);
-	
+
 	if (rc != EOK)
 		return rc;
-	
+
 	if (address != NULL)
 		*address = (usb_address_t) addr;
-	
+
 	return EOK;
 }
@@ -157,4 +157,7 @@
  * a hub driver.
  *
+ * This implementation eccepts 0 as valid handle and replaces it with fun's
+ * handle.
+ *
  * @param[in] fun Device function the operation is running on.
  * @param[in] handle Devman handle of USB device we want address of.
@@ -162,5 +165,5 @@
  * @return Error code.
  */
-int usb_iface_get_address_hub_child_impl(ddf_fun_t *fun,
+int usb_iface_get_address_set_my_handle_impl(ddf_fun_t *fun,
     devman_handle_t handle, usb_address_t *address)
 {
@@ -168,5 +171,5 @@
 		handle = fun->handle;
 	}
-	return usb_iface_get_address_hub_impl(fun, handle, address);
+	return usb_iface_get_address_forward_impl(fun, handle, address);
 }
 
Index: uspace/lib/usbdev/src/recognise.c
===================================================================
--- uspace/lib/usbdev/src/recognise.c	(revision cae002cccadb8f80b02e632090ca484bf19bd83a)
+++ uspace/lib/usbdev/src/recognise.c	(revision eea3e39c84d40649f8c994cf924f850eabab33c6)
@@ -50,5 +50,5 @@
 
 /** DDF operations of child devices. */
-ddf_dev_ops_t child_ops = {
+static ddf_dev_ops_t child_ops = {
 	.interfaces[USB_DEV_IFACE] = &usb_iface_hub_child_impl
 };
@@ -339,5 +339,5 @@
  * @param[in] hc_handle Handle of the host controller.
  * @param[in] parent Parent device.
- * @param[in] dev_ops Child device ops.
+ * @param[in] dev_ops Child device ops. Default child_ops will be used if NULL.
  * @param[in] dev_data Arbitrary pointer to be stored in the child
  *	as @c driver_data.
