Date: Thu, 2 Jan 2025 18:28:17 GMT From: John Baldwin <jhb@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 28f5e880e8b2 - main - Use device_delete_children instead of explicit calls to device_delete_child Message-ID: <202501021828.502ISHT5066053@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=28f5e880e8b28d77cf1a4eb6ce2a766d3c5a3926 commit 28f5e880e8b28d77cf1a4eb6ce2a766d3c5a3926 Author: John Baldwin <jhb@FreeBSD.org> AuthorDate: 2025-01-02 18:20:21 +0000 Commit: John Baldwin <jhb@FreeBSD.org> CommitDate: 2025-01-02 18:20:21 +0000 Use device_delete_children instead of explicit calls to device_delete_child This is simpler and more robust in the face of potential double-frees (e.g. if called after bus_generic_detach which will delete devices in a future commit). Reviewed by: manu, imp Differential Revision: https://reviews.freebsd.org/D47958 --- sys/arm/allwinner/aw_mmc.c | 8 +------- sys/arm64/broadcom/genet/if_genet.c | 5 +---- sys/dev/intpm/intpm.c | 3 +-- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/sys/arm/allwinner/aw_mmc.c b/sys/arm/allwinner/aw_mmc.c index 634afdfdfd46..9f61e1560658 100644 --- a/sys/arm/allwinner/aw_mmc.c +++ b/sys/arm/allwinner/aw_mmc.c @@ -482,7 +482,6 @@ static int aw_mmc_detach(device_t dev) { struct aw_mmc_softc *sc; - device_t d; sc = device_get_softc(dev); @@ -494,12 +493,7 @@ aw_mmc_detach(device_t dev) callout_drain(&sc->aw_timeoutc); - AW_MMC_LOCK(sc); - d = sc->child; - sc->child = NULL; - AW_MMC_UNLOCK(sc); - if (d != NULL) - device_delete_child(sc->aw_dev, d); + device_delete_children(sc->aw_dev); aw_mmc_teardown_dma(sc); diff --git a/sys/arm64/broadcom/genet/if_genet.c b/sys/arm64/broadcom/genet/if_genet.c index ccc35fe841df..0602f076b257 100644 --- a/sys/arm64/broadcom/genet/if_genet.c +++ b/sys/arm64/broadcom/genet/if_genet.c @@ -365,10 +365,7 @@ static void gen_destroy(struct gen_softc *sc) { - if (sc->miibus) { /* can't happen */ - device_delete_child(sc->dev, sc->miibus); - sc->miibus = NULL; - } + device_delete_children(sc->dev); bus_teardown_intr(sc->dev, sc->res[_RES_IRQ1], sc->ih); bus_teardown_intr(sc->dev, sc->res[_RES_IRQ2], sc->ih2); gen_bus_dma_teardown(sc); diff --git a/sys/dev/intpm/intpm.c b/sys/dev/intpm/intpm.c index 6fc228ac0cd0..3aa76ff48263 100644 --- a/sys/dev/intpm/intpm.c +++ b/sys/dev/intpm/intpm.c @@ -202,8 +202,7 @@ intsmb_release_resources(device_t dev) { struct intsmb_softc *sc = device_get_softc(dev); - if (sc->smbus) - device_delete_child(dev, sc->smbus); + device_delete_children(dev); if (sc->irq_hand) bus_teardown_intr(dev, sc->irq_res, sc->irq_hand); if (sc->irq_res)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202501021828.502ISHT5066053>