diff options
author | davidxu <davidxu@FreeBSD.org> | 2003-01-15 14:58:07 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2003-01-15 14:58:07 +0000 |
commit | 0893470fa03087092789a976d3b98c1a1b604efb (patch) | |
tree | 23bd8601c441bac6ebe72ef31fabd81aad5f83b4 /sys | |
parent | 4743c6079e199ae4df4fe4d0525ec85ce489b0ea (diff) | |
download | FreeBSD-src-0893470fa03087092789a976d3b98c1a1b604efb.zip FreeBSD-src-0893470fa03087092789a976d3b98c1a1b604efb.tar.gz |
Don't forget to disconnect object from class.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/kern/subr_bus.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index 0732e3b..d562a43 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -240,7 +240,7 @@ struct dev_event_info TAILQ_HEAD(devq, dev_event_info); -struct dev_softc +struct dev_softc { int inuse; int nonblock; @@ -996,7 +996,7 @@ device_delete_child(device_t dev, device_t child) TAILQ_REMOVE(&dev->children, child, link); TAILQ_REMOVE(&bus_data_devices, child, devlink); device_set_desc(child, NULL); - free(child, M_BUS); + kobj_delete((kobj_t) child, M_BUS); bus_data_generation_update(); return (0); @@ -1417,6 +1417,7 @@ device_set_driver(device_t dev, driver_t *driver) dev->softc = malloc(driver->size, M_BUS, M_NOWAIT | M_ZERO); if (!dev->softc) { + kobj_delete((kobj_t) dev, 0); kobj_init((kobj_t) dev, &null_class); dev->driver = NULL; return (ENOMEM); |