Merge r259393 from head:
Fix several panics when initialization of an ISA or PC-CARD device fails: o Assign sc->an_dev in an_probe() (which isn't really a probe function in the standard newbus sense) as we may need it for printing errors. o Use device_printf() rather than if_printf() in an_reset() - this is called from an_probe() long before the ifp structure is initialised in an_attach(). o Initialize the ifp structure early in an_attach() as we use if_printf() in cases where allocation of descriptors etc fails.
This commit is contained in:
parent
ff6061264f
commit
d41ec318f9
@ -357,6 +357,7 @@ an_probe(device_t dev)
|
||||
CSR_WRITE_2(sc, AN_INT_EN(sc->mpi350), 0);
|
||||
CSR_WRITE_2(sc, AN_EVENT_ACK(sc->mpi350), 0xFFFF);
|
||||
|
||||
sc->an_dev = dev;
|
||||
mtx_init(&sc->an_mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK,
|
||||
MTX_DEF);
|
||||
AN_LOCK(sc);
|
||||
@ -685,6 +686,9 @@ an_attach(struct an_softc *sc, int flags)
|
||||
device_printf(sc->an_dev, "can not if_alloc()\n");
|
||||
goto fail;
|
||||
}
|
||||
ifp->if_softc = sc;
|
||||
if_initname(ifp, device_get_name(sc->an_dev),
|
||||
device_get_unit(sc->an_dev));
|
||||
|
||||
sc->an_gone = 0;
|
||||
sc->an_associated = 0;
|
||||
@ -758,9 +762,6 @@ an_attach(struct an_softc *sc, int flags)
|
||||
#endif
|
||||
AN_UNLOCK(sc);
|
||||
|
||||
ifp->if_softc = sc;
|
||||
if_initname(ifp, device_get_name(sc->an_dev),
|
||||
device_get_unit(sc->an_dev));
|
||||
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
|
||||
ifp->if_ioctl = an_ioctl;
|
||||
ifp->if_start = an_start;
|
||||
@ -1387,7 +1388,7 @@ an_reset(struct an_softc *sc)
|
||||
an_cmd(sc, AN_CMD_NOOP2, 0);
|
||||
|
||||
if (an_cmd(sc, AN_CMD_FORCE_SYNCLOSS, 0) == ETIMEDOUT)
|
||||
if_printf(sc->an_ifp, "reset failed\n");
|
||||
device_printf(sc->an_dev, "reset failed\n");
|
||||
|
||||
an_cmd(sc, AN_CMD_DISABLE, 0);
|
||||
|
||||
|
@ -141,8 +141,6 @@ an_pccard_attach(device_t dev)
|
||||
|
||||
an_alloc_irq(dev, sc->irq_rid, 0);
|
||||
|
||||
sc->an_dev = dev;
|
||||
|
||||
error = an_attach(sc, flags);
|
||||
if (error)
|
||||
goto fail;
|
||||
|
Loading…
x
Reference in New Issue
Block a user