diff options
| author | Hans Petter Selasky <hselasky@FreeBSD.org> | 2016-10-17 10:20:38 +0000 |
|---|---|---|
| committer | Hans Petter Selasky <hselasky@FreeBSD.org> | 2016-10-17 10:20:38 +0000 |
| commit | d3bf5efc1ff19b102b176512a66110ec84ac982d (patch) | |
| tree | c35a2659be50242d73b1b0ec21d568922eca8a84 /sys/boot | |
| parent | d609986008eaedae8d9e3e88f8d9c1e1c23d13a4 (diff) | |
Notes
Diffstat (limited to 'sys/boot')
| -rw-r--r-- | sys/boot/kshim/bsd_kernel.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/boot/kshim/bsd_kernel.c b/sys/boot/kshim/bsd_kernel.c index 36a6d820aa41..c94b755e9eaf 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) { |
