aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/msk
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2024-11-01 14:09:01 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2024-11-01 14:09:01 +0000
commit2ff5c85027356038969d03c2beb55b98db389b41 (patch)
treed2257b886cc0894a87e1b91c24ffbacd6a40651b /sys/dev/msk
parent79dfe2b761891eb3ab1b6a769d4f6adc97335350 (diff)
Diffstat (limited to 'sys/dev/msk')
-rw-r--r--sys/dev/msk/if_msk.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/msk/if_msk.c b/sys/dev/msk/if_msk.c
index 0f41565c6b02..31c80b87511d 100644
--- a/sys/dev/msk/if_msk.c
+++ b/sys/dev/msk/if_msk.c
@@ -252,6 +252,7 @@ static const char *model_name[] = {
static int mskc_probe(device_t);
static int mskc_attach(device_t);
+static void mskc_child_deleted(device_t, device_t);
static int mskc_detach(device_t);
static int mskc_shutdown(device_t);
static int mskc_setup_rambuffer(struct msk_softc *);
@@ -335,6 +336,7 @@ static device_method_t mskc_methods[] = {
DEVMETHOD(device_resume, mskc_resume),
DEVMETHOD(device_shutdown, mskc_shutdown),
+ DEVMETHOD(bus_child_deleted, mskc_child_deleted),
DEVMETHOD(bus_get_dma_tag, mskc_get_dma_tag),
DEVMETHOD_END
@@ -2046,6 +2048,12 @@ msk_detach(device_t dev)
return (0);
}
+static void
+mskc_child_deleted(device_t dev, device_t child)
+{
+ free(device_get_ivars(child), M_DEVBUF);
+}
+
static int
mskc_detach(device_t dev)
{
@@ -2056,13 +2064,9 @@ mskc_detach(device_t dev)
if (device_is_alive(dev)) {
if (sc->msk_devs[MSK_PORT_A] != NULL) {
- free(device_get_ivars(sc->msk_devs[MSK_PORT_A]),
- M_DEVBUF);
device_delete_child(dev, sc->msk_devs[MSK_PORT_A]);
}
if (sc->msk_devs[MSK_PORT_B] != NULL) {
- free(device_get_ivars(sc->msk_devs[MSK_PORT_B]),
- M_DEVBUF);
device_delete_child(dev, sc->msk_devs[MSK_PORT_B]);
}
bus_generic_detach(dev);