Index: uspace/drv/usbhub/ports.c
===================================================================
--- uspace/drv/usbhub/ports.c	(revision f11c28882b54308c95926c83a1b72469bce47d9c)
+++ uspace/drv/usbhub/ports.c	(revision d824daf64bae3bb274786e0a129f6e6216a54f2b)
@@ -181,9 +181,18 @@
 		 */
 	} else {
-		usb_log_warning("this is strange, disconnected device had "
-			"no address\n");
-		//device was disconnected before it`s port was reset -
-		//return default address
-		usb_hub_release_default_address(hub);
+		// TODO: is this really reason to print a warning?
+		usb_log_warning("Device removed before being registered.\n");
+
+		/*
+		 * Device was removed before port reset completed.
+		 * We will announce a failed port reset to unblock the
+		 * port reset callback from new device wrapper.
+		 */
+		usb_hub_port_t *the_port = hub->ports + port;
+		fibril_mutex_lock(&the_port->reset_mutex);
+		the_port->reset_completed = true;
+		the_port->reset_okay = false;
+		fibril_condvar_broadcast(&the_port->reset_cv);
+		fibril_mutex_unlock(&the_port->reset_mutex);
 	}
 }
@@ -207,4 +216,5 @@
 		fibril_mutex_lock(&the_port->reset_mutex);
 		the_port->reset_completed = true;
+		the_port->reset_okay = true;
 		fibril_condvar_broadcast(&the_port->reset_cv);
 		fibril_mutex_unlock(&the_port->reset_mutex);
@@ -319,5 +329,9 @@
 	}
 
-	return EOK;
+	if (my_port->reset_okay) {
+		return EOK;
+	} else {
+		return ESTALL;
+	}
 }
 
Index: uspace/drv/usbhub/ports.h
===================================================================
--- uspace/drv/usbhub/ports.h	(revision f11c28882b54308c95926c83a1b72469bce47d9c)
+++ uspace/drv/usbhub/ports.h	(revision d824daf64bae3bb274786e0a129f6e6216a54f2b)
@@ -51,4 +51,6 @@
 	 */
 	bool reset_completed;
+	/** Whether to announce the port reset as successful. */
+	bool reset_okay;
 
 	/** Information about attached device. */
Index: uspace/drv/usbhub/usbhub.c
===================================================================
--- uspace/drv/usbhub/usbhub.c	(revision f11c28882b54308c95926c83a1b72469bce47d9c)
+++ uspace/drv/usbhub/usbhub.c	(revision d824daf64bae3bb274786e0a129f6e6216a54f2b)
@@ -177,23 +177,4 @@
 
 	return true;
-}
-
-/**
- * release default address used by given hub
- *
- * Also unsets hub->is_default_address_used. Convenience wrapper function.
- * @note hub->connection MUST be open for communication
- * @param hub hub representation
- * @return error code
- */
-int usb_hub_release_default_address(usb_hub_info_t * hub) {
-	int opResult = usb_hc_release_default_address(&hub->connection);
-	if (opResult != EOK) {
-		usb_log_error("could not release default address, errno %d\n",
-		    opResult);
-		return opResult;
-	}
-	hub->is_default_address_used = false;
-	return EOK;
 }
 
Index: uspace/drv/usbhub/usbhub.h
===================================================================
--- uspace/drv/usbhub/usbhub.h	(revision f11c28882b54308c95926c83a1b72469bce47d9c)
+++ uspace/drv/usbhub/usbhub.h	(revision d824daf64bae3bb274786e0a129f6e6216a54f2b)
@@ -98,6 +98,4 @@
     uint8_t *change_bitmap, size_t change_bitmap_size, void *arg);
 
-int usb_hub_release_default_address(usb_hub_info_t * hub);
-
 #endif
 /**
Index: uspace/drv/vhc/connhost.c
===================================================================
--- uspace/drv/vhc/connhost.c	(revision f11c28882b54308c95926c83a1b72469bce47d9c)
+++ uspace/drv/vhc/connhost.c	(revision d824daf64bae3bb274786e0a129f6e6216a54f2b)
@@ -324,16 +324,4 @@
 }
 
-static int reserve_default_address(ddf_fun_t *fun, usb_speed_t ignored)
-{
-	usb_address_keeping_reserve_default(&addresses);
-	return EOK;
-}
-
-static int release_default_address(ddf_fun_t *fun)
-{
-	usb_address_keeping_release_default(&addresses);
-	return EOK;
-}
-
 static int request_address(ddf_fun_t *fun, usb_speed_t ignored,
     usb_address_t *address)
@@ -388,6 +376,4 @@
 
 usbhc_iface_t vhc_iface = {
-	.reserve_default_address = reserve_default_address,
-	.release_default_address = release_default_address,
 	.request_address = request_address,
 	.bind_address = bind_address,
