Date: Tue, 4 Sep 2007 19:10:07 GMT From: NORCOTT381@aol.com To: freebsd-bugs@FreeBSD.org Subject: Re: kern/113406: [xl] Page fault in XL0 device driver (regression) Message-ID: <200709041910.l84JA7hT002986@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/113406; it has been noted by GNATS. From: NORCOTT381@aol.com To: bug-followup@FreeBSD.org, rdls@satamatics.com Cc: Subject: Re: kern/113406: [xl] Page fault in XL0 device driver (regression) Date: Tue, 4 Sep 2007 14:51:34 EDT -------------------------------1188931894 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Hi, On my pc running the ifconfig command 2 times recreates the error. Looking at the code in if_xl.c: static int xl_ifmedia_upd(struct ifnet *ifp) { struct xl_softc *sc = ifp->if_softc; struct ifmedia *ifm = NULL; struct mii_data *mii = NULL; XL_LOCK(sc); if (sc->xl_miibus != NULL) mii = device_get_softc(sc->xl_miibus); if (mii == NULL) ifm = &sc->ifmedia; else ifm = &mii->mii_media; switch (IFM_SUBTYPE(ifm->ifm_media)) { case IFM_100_FX: case IFM_10_FL: case IFM_10_2: case IFM_10_5: xl_setmode(sc, ifm->ifm_media); return (0); <---------- *** does not release lock **** break; default: break; } if (sc->xl_media & XL_MEDIAOPT_MII || sc->xl_media & XL_MEDIAOPT_BTX || sc->xl_media & XL_MEDIAOPT_BT4) { xl_init_locked(sc); } else { xl_setmode(sc, ifm->ifm_media); } XL_UNLOCK(sc); return (0); } This return does not release the lock at the begining. I removed the 'return(0);' and the pc does not produce the error and allows me to change the media. At the moment I cannot test the BNC part. pn. -------------------------------1188931894 Content-Type: text/html; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=3DContent-Type content=3D"text/html; charset=3DUS-ASCII"> <META content=3D"MSHTML 6.00.2900.2963" name=3DGENERATOR></HEAD> <BODY id=3Drole_body style=3D"FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY:=20= Arial"=20 bottomMargin=3D7 leftMargin=3D7 topMargin=3D7 rightMargin=3D7><FONT id=3Drol= e_document=20 face=3DArial color=3D#000000 size=3D2> <DIV>Hi, On my pc running the ifconfig command 2 times recreates the er= ror.=20 </DIV> <DIV>Looking at the code in if_xl.c:</DIV> <DIV> </DIV> <DIV> </DIV> <DIV> </DIV> <DIV>static int<BR>xl_ifmedia_upd(struct ifnet *ifp)<BR>{<BR>struct xl_softc= *sc=20 =3D ifp->if_softc;<BR>struct ifmedia *ifm =3D NULL;<BR>struct mii_data *m= ii =3D=20 NULL;<BR><BR>XL_LOCK(sc);<BR><BR>if (sc->xl_miibus !=3D NULL)<BR>mii =3D=20 device_get_softc(sc->xl_miibus);<BR>if (mii =3D=3D NULL)<BR>ifm =3D=20 &sc->ifmedia;<BR>else<BR>ifm =3D &mii->mii_media;<BR><BR>switc= h=20 (IFM_SUBTYPE(ifm->ifm_media)) {<BR>case IFM_100_FX:<BR>case=20 IFM_10_FL:<BR>case IFM_10_2:<BR>case IFM_10_5:<BR>xl_setmode(sc,=20 ifm->ifm_media);<BR><STRONG>return (0);</STRONG> =20 <---------- *** does not release lock=20 ****<BR>break;<BR>default:<BR>break;<BR>}<BR><BR>if (sc->xl_media &=20 XL_MEDIAOPT_MII ||<BR> sc->xl_media & XL_MEDIAOPT_B= TX=20 ||<BR> sc->xl_media & XL_MEDIAOPT_BT4)=20 {<BR>xl_init_locked(sc);<BR>} else {<BR>xl_setmode(sc,=20 ifm->ifm_media);<BR>}<BR><BR>XL_UNLOCK(sc);<BR><BR>return (0);<BR>}<BR></= DIV> <DIV> </DIV> <DIV> </DIV> <DIV>This return does not release the lock at the begining.</DIV> <DIV> </DIV> <DIV>I removed the 'return(0);' and the pc does not produce the error and al= lows=20 me to change the media.</DIV> <DIV> </DIV> <DIV>At the moment I cannot test the BNC part.</DIV> <DIV> </DIV> <DIV> </DIV> <DIV> </DIV> <DIV>pn.</DIV></FONT> </BODY></HTML> -------------------------------1188931894--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200709041910.l84JA7hT002986>