diff options
author | imp <imp@FreeBSD.org> | 2000-08-19 05:01:07 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2000-08-19 05:01:07 +0000 |
commit | 2f92e39a0fe52366609e44e5a1978feb243c8755 (patch) | |
tree | f8816ee977cab0935eb6f317b3f830bbf7ecfca8 | |
parent | 037be25ed3d6141fafe190b0cd650f6a5fc255ff (diff) | |
download | FreeBSD-src-2f92e39a0fe52366609e44e5a1978feb243c8755.zip FreeBSD-src-2f92e39a0fe52366609e44e5a1978feb243c8755.tar.gz |
Call bus_generic_detach on pcic before deleting the children. This
has the side effect of detaching the children before I delete them.
When I put the last commits in a loop for loop it died after 5 or so
iterations. After this change, I lasted 50 before I stopped the test.
-rw-r--r-- | sys/dev/pcic/i82365.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/pcic/i82365.c b/sys/dev/pcic/i82365.c index 5204e94..8e0ac34 100644 --- a/sys/dev/pcic/i82365.c +++ b/sys/dev/pcic/i82365.c @@ -1523,6 +1523,9 @@ pcic_detach(device_t dev) int i; int ret; + ret = bus_generic_detach(dev); + if (ret != 0) + return (ret); device_get_children(dev, &kids, &nkids); for (i = 0; i < nkids; i++) { if ((ret = device_delete_child(pccarddev, kids[i])) != 0) @@ -1530,7 +1533,7 @@ pcic_detach(device_t dev) device_get_nameunit(kids[i]), ret); } free(kids, M_TEMP); - return (bus_generic_detach(dev)); + return 0; } SYSINIT(pcic, SI_SUB_KTHREAD_IDLE, SI_ORDER_ANY, pcic_start_threads, 0); |