Index: uspace/lib/usb/src/hcdhubd.c
===================================================================
--- uspace/lib/usb/src/hcdhubd.c	(revision 1f43c8f679fd7fa7cca8cbe2f2a91810db9ada84)
+++ uspace/lib/usb/src/hcdhubd.c	(revision 45707797ea0937aa3fe5bc586f68f18f1b4e1890)
@@ -108,5 +108,5 @@
 {
 	char *id;
-	int rc = asprintf(&id, "usb&hc=%s&hub", dev->generic->name);
+	int rc = asprintf(&id, "usb&hc=%s&hub", hc_driver->name);
 	if (rc <= 0) {
 		return rc;
@@ -135,4 +135,6 @@
 	int rc;
 
+	async_usleep(1000);
+
 	device_t *child = create_device();
 	match_id_t *match_id = NULL;
@@ -199,4 +201,10 @@
 	printf("%s: about to add child device `%s' (%s)\n", hc_driver->name,
 	    name, match_id);
+
+	/*
+	 * Seems that creating fibril which postpones the action
+	 * is the best solution.
+	 */
+	create_fibril = true;
 
 	struct child_device_info *child_info
