Index: uspace/drv/bus/usb/xhci/device.c
===================================================================
--- uspace/drv/bus/usb/xhci/device.c	(revision 702729ede336d2c5ae6c0cb133017f5af6fa682a)
+++ uspace/drv/bus/usb/xhci/device.c	(revision 18092dd3bd2c540b2fb12b107dd0e29c08214bf4)
@@ -81,4 +81,5 @@
 	usb_log_debug("Obtained slot ID: %u.", dev->slot_id);
 
+	/* Temporary reference */
 	endpoint_t *ep0_base;
 	if ((err = bus_endpoint_add(&dev->base, &ep0_initial_desc, &ep0_base)))
@@ -93,10 +94,13 @@
 		goto err_added;
 
+	/* Temporary reference */
+	endpoint_del_ref(ep0_base);
+
 	return EOK;
 
 err_added:
-	/* Bus reference */
+	bus_endpoint_remove(ep0_base);
+	/* Temporary reference */
 	endpoint_del_ref(ep0_base);
-	dev->base.endpoints[0] = NULL;
 err_slot:
 	hc_disable_slot(dev);
Index: uspace/lib/usbhost/src/usb2_bus.c
===================================================================
--- uspace/lib/usbhost/src/usb2_bus.c	(revision 702729ede336d2c5ae6c0cb133017f5af6fa682a)
+++ uspace/lib/usbhost/src/usb2_bus.c	(revision 18092dd3bd2c540b2fb12b107dd0e29c08214bf4)
@@ -122,4 +122,6 @@
 	    .endpoint.max_packet_size = CTRL_PIPE_MIN_PACKET_SIZE,
 	};
+
+	/* Temporary reference */
 	endpoint_t *default_ep;
 	err = bus_endpoint_add(dev, &ep0_desc, &default_ep);
@@ -162,8 +164,13 @@
 	}
 
+	/* Temporary reference */
+	endpoint_del_ref(default_ep);
+
 	return EOK;
 
 err_default_control_ep:
 	bus_endpoint_remove(default_ep);
+	/* Temporary reference */
+	endpoint_del_ref(default_ep);
 err_address:
 	release_address(helper, address);
