Index: uspace/drv/bus/usb/usbmid/main.c
===================================================================
--- uspace/drv/bus/usb/usbmid/main.c	(revision 207acc4ea327c79393503483d190d7efcc815b79)
+++ uspace/drv/bus/usb/usbmid/main.c	(revision 5153b5877a0d694ebd506e73a73fd108948c5b96)
@@ -68,5 +68,5 @@
 /** Callback when a MID device is about to be removed from the host.
  *
- * @param gen_dev Generic DDF device representing the removed device.
+ * @param dev USB device representing the removed device.
  * @return Error code.
  */
@@ -74,7 +74,8 @@
 {
 	assert(dev);
+	usb_mid_t *usb_mid = dev->driver_data;
+	assert(usb_mid);
 
 	/* Remove ctl function */
-	usb_mid_t *usb_mid = dev->driver_data;
 	int ret = ddf_fun_unbind(usb_mid->ctl_fun);
 	if (ret != EOK) {
@@ -109,5 +110,5 @@
 		pret = usbmid_interface_destroy(iface);
 		if (pret != EOK) {
-			usb_log_error("Failed to remove child for interface "
+			usb_log_error("Failed to destroy child for interface "
 			    "%d (%s): %s\n", iface->interface_no,
 			    usb_str_class(iface->interface->interface_class),
@@ -121,5 +122,5 @@
 /** Callback when a MID device was removed from the host.
  *
- * @param gen_dev Generic DDF device representing the removed device.
+ * @param dev USB device representing the removed device.
  * @return Error code.
  */
@@ -127,8 +128,10 @@
 {
 	assert(dev);
+	usb_mid_t *usb_mid = dev->driver_data;
+	assert(usb_mid);
+
 	usb_log_info("USB MID gone: `%s'.\n", dev->ddf_dev->name);
 
 	/* Remove ctl function */
-	usb_mid_t *usb_mid = dev->driver_data;
 	int ret = ddf_fun_unbind(usb_mid->ctl_fun);
 	if (ret != EOK) {
Index: uspace/drv/bus/usb/usbmid/usbmid.c
===================================================================
--- uspace/drv/bus/usb/usbmid/usbmid.c	(revision 207acc4ea327c79393503483d190d7efcc815b79)
+++ uspace/drv/bus/usb/usbmid/usbmid.c	(revision 5153b5877a0d694ebd506e73a73fd108948c5b96)
@@ -124,9 +124,4 @@
 	}
 
-	iface->fun = child;
-
-	child->driver_data = iface;
-	child->ops = &child_device_ops;
-
 	rc = usb_device_create_match_ids_from_interface(device_descriptor,
 	    interface_descriptor, &child->match_ids);
@@ -143,4 +138,8 @@
 	}
 
+	iface->fun = child;
+	child->driver_data = iface;
+	child->ops = &child_device_ops;
+
 	return EOK;
 }
