summaryrefslogtreecommitdiffstats
path: root/sys/boot/kshim/bsd_kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/boot/kshim/bsd_kernel.c')
-rw-r--r--sys/boot/kshim/bsd_kernel.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/boot/kshim/bsd_kernel.c b/sys/boot/kshim/bsd_kernel.c
index 36a6d82..c94b755 100644
--- a/sys/boot/kshim/bsd_kernel.c
+++ b/sys/boot/kshim/bsd_kernel.c
@@ -817,8 +817,12 @@ device_delete_child(device_t dev, device_t child)
int error = 0;
device_t grandchild;
- /* remove children first */
+ /* detach parent before deleting children, if any */
+ error = device_detach(child);
+ if (error)
+ goto done;
+ /* remove children second */
while ((grandchild = TAILQ_FIRST(&child->dev_children))) {
error = device_delete_child(child, grandchild);
if (error) {
@@ -827,11 +831,6 @@ device_delete_child(device_t dev, device_t child)
}
}
- error = device_detach(child);
-
- if (error)
- goto done;
-
devclass_delete_device(child->dev_module, child);
if (dev != NULL) {
OpenPOWER on IntegriCloud