Remove now-redundant calls to device_delete_child

Deleting a child explicitly before calling bus_generic_detach is now
redundant, so remove those calls and rely on bus_generic_detach to
delete children instead.

Differential Revision:	https://reviews.freebsd.org/D47961
This commit is contained in:
John Baldwin 2025-01-02 13:22:35 -05:00
parent cf416f56eb
commit 4e62c3cafa
28 changed files with 6 additions and 150 deletions

View file

@ -811,10 +811,7 @@ emac_detach(device_t dev)
bus_teardown_intr(sc->emac_dev, sc->emac_irq,
sc->emac_intrhand);
if (sc->emac_miibus != NULL) {
device_delete_child(sc->emac_dev, sc->emac_miibus);
bus_generic_detach(sc->emac_dev);
}
bus_generic_detach(sc->emac_dev);
if (sc->emac_clk != NULL)
clk_disable(sc->emac_clk);

View file

@ -761,10 +761,6 @@ ae_detach(device_t dev)
taskqueue_free(sc->tq);
sc->tq = NULL;
}
if (sc->miibus != NULL) {
device_delete_child(dev, sc->miibus);
sc->miibus = NULL;
}
bus_generic_detach(sc->dev);
ae_dma_free(sc);
if (sc->intrhand != NULL) {

View file

@ -686,10 +686,6 @@ age_detach(device_t dev)
sc->age_tq = NULL;
}
if (sc->age_miibus != NULL) {
device_delete_child(dev, sc->age_miibus);
sc->age_miibus = NULL;
}
bus_generic_detach(dev);
age_dma_free(sc);

View file

@ -1699,10 +1699,6 @@ alc_detach(device_t dev)
sc->alc_tq = NULL;
}
if (sc->alc_miibus != NULL) {
device_delete_child(dev, sc->alc_miibus);
sc->alc_miibus = NULL;
}
bus_generic_detach(dev);
alc_dma_free(sc);

View file

@ -711,10 +711,6 @@ ale_detach(device_t dev)
sc->ale_tq = NULL;
}
if (sc->ale_miibus != NULL) {
device_delete_child(dev, sc->ale_miibus);
sc->ale_miibus = NULL;
}
bus_generic_detach(dev);
ale_dma_free(sc);

View file

@ -2539,8 +2539,6 @@ dc_detach(device_t dev)
callout_drain(&sc->dc_wdog_ch);
ether_ifdetach(ifp);
}
if (sc->dc_miibus)
device_delete_child(dev, sc->dc_miibus);
bus_generic_detach(dev);
if (sc->dc_intrhand)

View file

@ -656,10 +656,6 @@ dwc_detach(device_t dev)
ether_ifdetach(sc->ifp);
}
if (sc->miibus != NULL) {
device_delete_child(dev, sc->miibus);
sc->miibus = NULL;
}
bus_generic_detach(dev);
/* Free DMA descriptors */

View file

@ -1216,8 +1216,6 @@ eqos_detach(device_t dev)
ether_ifdetach(sc->ifp);
}
if (sc->miibus)
device_delete_child(dev, sc->miibus);
bus_generic_detach(dev);
if (sc->irq_handle)

View file

@ -370,8 +370,6 @@ et_detach(device_t dev)
callout_drain(&sc->sc_tick);
}
if (sc->sc_miibus != NULL)
device_delete_child(dev, sc->sc_miibus);
bus_generic_detach(dev);
if (sc->sc_irq_handle != NULL)

View file

@ -933,8 +933,6 @@ fxp_release(struct fxp_softc *sc)
FXP_LOCK_ASSERT(sc, MA_NOTOWNED);
KASSERT(sc->ih == NULL,
("fxp_release() called with intr handle still active"));
if (sc->miibus)
device_delete_child(sc->dev, sc->miibus);
bus_generic_detach(sc->dev);
ifmedia_removeall(&sc->sc_media);
if (sc->fxp_desc.cbl_list) {

View file

@ -279,17 +279,7 @@ static int ips_diskdev_init(ips_softc_t *sc)
static int ips_diskdev_free(ips_softc_t *sc)
{
int i;
int error = 0;
for(i = 0; i < IPS_MAX_NUM_DRIVES; i++){
if(sc->diskdev[i]) {
error = device_delete_child(sc->dev, sc->diskdev[i]);
if(error)
return error;
}
}
bus_generic_detach(sc->dev);
return 0;
return (bus_generic_detach(sc->dev));
}
/* ips_timeout is periodically called to make sure no commands sent

View file

@ -928,10 +928,6 @@ jme_detach(device_t dev)
sc->jme_tq = NULL;
}
if (sc->jme_miibus != NULL) {
device_delete_child(dev, sc->jme_miibus);
sc->jme_miibus = NULL;
}
bus_generic_detach(dev);
jme_dma_free(sc);

View file

@ -2020,17 +2020,6 @@ msk_detach(device_t dev)
MSK_IF_LOCK(sc_if);
}
/*
* We're generally called from mskc_detach() which is using
* device_delete_child() to get to here. It's already trashed
* miibus for us, so don't do it here or we'll panic.
*
* if (sc_if->msk_miibus != NULL) {
* device_delete_child(dev, sc_if->msk_miibus);
* sc_if->msk_miibus = NULL;
* }
*/
msk_rx_dma_jfree(sc_if);
msk_txrx_dma_free(sc_if);
bus_generic_detach(dev);
@ -2058,15 +2047,7 @@ mskc_detach(device_t dev)
sc = device_get_softc(dev);
KASSERT(mtx_initialized(&sc->msk_mtx), ("msk mutex not initialized"));
if (device_is_alive(dev)) {
if (sc->msk_devs[MSK_PORT_A] != NULL) {
device_delete_child(dev, sc->msk_devs[MSK_PORT_A]);
}
if (sc->msk_devs[MSK_PORT_B] != NULL) {
device_delete_child(dev, sc->msk_devs[MSK_PORT_B]);
}
bus_generic_detach(dev);
}
bus_generic_detach(dev);
/* Disable all interrupts. */
CSR_WRITE_4(sc, B0_IMSK, 0);

View file

@ -711,8 +711,6 @@ nfe_detach(device_t dev)
nfe_set_macaddr(sc, eaddr);
if_free(ifp);
}
if (sc->nfe_miibus)
device_delete_child(dev, sc->nfe_miibus);
bus_generic_detach(dev);
if (sc->nfe_tq != NULL) {
taskqueue_drain(sc->nfe_tq, &sc->nfe_int_task);

View file

@ -999,10 +999,6 @@ nge_detach(device_t dev)
ether_ifdetach(ifp);
}
if (sc->nge_miibus != NULL) {
device_delete_child(dev, sc->nge_miibus);
sc->nge_miibus = NULL;
}
bus_generic_detach(dev);
if (sc->nge_intrhand != NULL)
bus_teardown_intr(dev, sc->nge_irq, sc->nge_intrhand);

View file

@ -275,42 +275,12 @@ int
cbb_detach(device_t brdev)
{
struct cbb_softc *sc = device_get_softc(brdev);
device_t *devlist;
int tmp, tries, error, numdevs;
int error;
/*
* Before we delete the children (which we have to do because
* attach doesn't check for children busses correctly), we have
* to detach the children. Even if we didn't need to delete the
* children, we have to detach them.
*/
error = bus_generic_detach(brdev);
if (error != 0)
return (error);
/*
* Since the attach routine doesn't search for children before it
* attaches them to this device, we must delete them here in order
* for the kldload/unload case to work. If we failed to do that, then
* we'd get duplicate devices when cbb.ko was reloaded.
*/
tries = 10;
do {
error = device_get_children(brdev, &devlist, &numdevs);
if (error == 0)
break;
/*
* Try hard to cope with low memory.
*/
if (error == ENOMEM) {
pause("cbbnomem", 1);
continue;
}
} while (tries-- > 0);
for (tmp = 0; tmp < numdevs; tmp++)
device_delete_child(brdev, devlist[tmp]);
free(devlist, M_TEMP);
/* Turn off the interrupts */
cbb_set(sc, CBB_SOCKET_MASK, 0);

View file

@ -1803,8 +1803,6 @@ re_detach(device_t dev)
if_setflagbits(ifp, 0, IFF_UP);
ether_ifdetach(ifp);
}
if (sc->rl_miibus)
device_delete_child(dev, sc->rl_miibus);
bus_generic_detach(dev);
/*

View file

@ -882,8 +882,6 @@ rl_detach(device_t dev)
#if 0
sc->suspended = 1;
#endif
if (sc->rl_miibus)
device_delete_child(dev, sc->rl_miibus);
bus_generic_detach(dev);
if (sc->rl_intrhand[0])

View file

@ -675,8 +675,6 @@ sge_detach(device_t dev)
SGE_UNLOCK(sc);
callout_drain(&sc->sge_stat_ch);
}
if (sc->sge_miibus)
device_delete_child(dev, sc->sge_miibus);
bus_generic_detach(dev);
if (sc->sge_intrhand)

View file

@ -1146,8 +1146,6 @@ sis_detach(device_t dev)
callout_drain(&sc->sis_stat_ch);
ether_ifdetach(ifp);
}
if (sc->sis_miibus)
device_delete_child(dev, sc->sis_miibus);
bus_generic_detach(dev);
if (sc->sis_intrhand)

View file

@ -1771,15 +1771,6 @@ sk_detach(device_t dev)
ether_ifdetach(ifp);
SK_IF_LOCK(sc_if);
}
/*
* We're generally called from skc_detach() which is using
* device_delete_child() to get to here. It's already trashed
* miibus for us, so don't do it here or we'll panic.
*/
/*
if (sc_if->sk_miibus != NULL)
device_delete_child(dev, sc_if->sk_miibus);
*/
bus_generic_detach(dev);
sk_dma_jumbo_free(sc_if);
sk_dma_free(sc_if);
@ -1798,15 +1789,7 @@ skc_detach(device_t dev)
sc = device_get_softc(dev);
KASSERT(mtx_initialized(&sc->sk_mtx), ("sk mutex not initialized"));
if (device_is_alive(dev)) {
if (sc->sk_devs[SK_PORT_A] != NULL) {
device_delete_child(dev, sc->sk_devs[SK_PORT_A]);
}
if (sc->sk_devs[SK_PORT_B] != NULL) {
device_delete_child(dev, sc->sk_devs[SK_PORT_B]);
}
bus_generic_detach(dev);
}
bus_generic_detach(dev);
if (sc->sk_intrhand)
bus_teardown_intr(dev, sc->sk_res[1], sc->sk_intrhand);

View file

@ -450,10 +450,7 @@ smc_detach(device_t dev)
if_free(sc->smc_ifp);
}
if (sc->smc_miibus != NULL) {
device_delete_child(sc->smc_dev, sc->smc_miibus);
bus_generic_detach(sc->smc_dev);
}
bus_generic_detach(sc->smc_dev);
if (sc->smc_reg != NULL) {
type = SYS_RES_IOPORT;

View file

@ -1074,8 +1074,6 @@ ste_detach(device_t dev)
STE_UNLOCK(sc);
callout_drain(&sc->ste_callout);
}
if (sc->ste_miibus)
device_delete_child(dev, sc->ste_miibus);
bus_generic_detach(dev);
if (sc->ste_intrhand)

View file

@ -672,10 +672,6 @@ stge_detach(device_t dev)
ether_ifdetach(ifp);
}
if (sc->sc_miibus != NULL) {
device_delete_child(dev, sc->sc_miibus);
sc->sc_miibus = NULL;
}
bus_generic_detach(dev);
stge_dma_free(sc);

View file

@ -1177,8 +1177,6 @@ vge_detach(device_t dev)
VGE_UNLOCK(sc);
callout_drain(&sc->vge_watchdog);
}
if (sc->vge_miibus)
device_delete_child(dev, sc->vge_miibus);
bus_generic_detach(dev);
if (sc->vge_intrhand)

View file

@ -838,8 +838,6 @@ vr_detach(device_t dev)
taskqueue_drain(taskqueue_fast, &sc->vr_inttask);
ether_ifdetach(ifp);
}
if (sc->vr_miibus)
device_delete_child(dev, sc->vr_miibus);
bus_generic_detach(dev);
if (sc->vr_intrhand)

View file

@ -506,10 +506,6 @@ vte_detach(device_t dev)
ether_ifdetach(ifp);
}
if (sc->vte_miibus != NULL) {
device_delete_child(dev, sc->vte_miibus);
sc->vte_miibus = NULL;
}
bus_generic_detach(dev);
if (sc->vte_intrhand != NULL) {

View file

@ -1572,8 +1572,6 @@ xl_detach(device_t dev)
callout_drain(&sc->xl_tick_callout);
ether_ifdetach(ifp);
}
if (sc->xl_miibus)
device_delete_child(dev, sc->xl_miibus);
bus_generic_detach(dev);
ifmedia_removeall(&sc->ifmedia);