summaryrefslogtreecommitdiffstats
path: root/sys/dev/pcic
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2000-08-19 05:01:07 +0000
committerimp <imp@FreeBSD.org>2000-08-19 05:01:07 +0000
commit2f92e39a0fe52366609e44e5a1978feb243c8755 (patch)
treef8816ee977cab0935eb6f317b3f830bbf7ecfca8 /sys/dev/pcic
parent037be25ed3d6141fafe190b0cd650f6a5fc255ff (diff)
downloadFreeBSD-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.
Diffstat (limited to 'sys/dev/pcic')
-rw-r--r--sys/dev/pcic/i82365.c5
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);
OpenPOWER on IntegriCloud