On Thu, Jun 09, 2005 at 10:25:30AM +0200, Maxim Sobolev wrote: > Hi, > > I've noticed that in some cases you have removed bcopy() > into arpcom.ac_enaddr completely, while in some others > have modified it to use IFP2AC(). I wonder if it's a mistake > or if there is some logic behind that.
Good catch, these are bugs. I'll do another sweep. The problems is that I did the inital sweep based on some macros and not quite everything was converted. > Also, it looks like in cdce(4) driver you are referencing > if_softc before it's been assigned by if_alloc(): > > @@ -282,9 +283,13 @@ > } > } > > - bcopy(eaddr, (char *)&sc->arpcom.ac_enaddr, ETHER_ADDR_LEN); > + bcopy(eaddr, (char *)&GET_ARPCOM(sc)->ac_enaddr, ETHER_ADDR_LEN); > > - ifp = GET_IFP(sc); > + ifp = GET_IFP(sc) = if_alloc(IFT_ETHER); > + if (ifp == NULL) { > + printf("%s: can not if_alloc()\n", USBDEVNAME(sc->cdce_dev)); > + USB_ATTACH_ERROR_RETURN; > + } > ifp->if_softc = sc; > if_initname(ifp, "cdce", sc->cdce_unit); > ifp->if_mtu = ETHERMTU; > @@ -323,6 +328,7 @@ > > GET_ARPCOM(sc) basically dereferences sc->cdce_ifp, which isn't > initialized before if_alloc() on the next line. Yup, I got tripped up becuase this doesn't use the macro I introduced. Thanks for the review! -- Brooks -- Any statement of the form "X is the one, true Y" is FALSE. PGP fingerprint 655D 519C 26A7 82E7 2529 9BF0 5D8E 8BE9 F238 1AD4
pgpQfE1ZBCoMo.pgp
Description: PGP signature