Date: Fri, 16 Sep 2005 12:19:28 +0300 From: Ruslan Ermilov <ru@freebsd.org> To: John Baldwin <jhb@freebsd.org> Cc: cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/dev/re if_re.c Message-ID: <20050916091928.GG88456@ip.net.ua> In-Reply-To: <20050915205639.GD88456@ip.net.ua> References: <200509151859.j8FIxY6v007639@repoman.freebsd.org> <200509151521.14204.jhb@FreeBSD.org> <20050915205639.GD88456@ip.net.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
--S5HS5MvDw4DmbRmb Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Sep 15, 2005 at 11:56:39PM +0300, Ruslan Ermilov wrote: > The first is the BPF detach bad interaction with foo_detach(), > as described in re_detach(). This panic is real with (I think) > all drivers. And testing IFF_DRV_RUNNING here doesn't seem to > be able to prevent the panic. Perhaps the fix would be to > move ether_ifdetach() before foo_stop() in foo_detach(), I'm > not yet sure. >=20 I tried with rl(4) PCCARD, by moving ether_ifdetach() before rl_stop() in rl_detach(). It fixes the panic when you eject the card, but doesn't fix it when kldunloading the module. The difference is that rl_detach() is called already after miibus0 and rlphy0 has been detached when kldunloading the module. When ejecting the card, rl_detach() is called first. What happens when you kldunload the module with BPF listener attached, is that bpfdetach() calls rl_ioctl() to reset promisc, that calls rl_init_locked(), and that results in mii =3D device_get_softc(sc->rl_miibus); being NULL (remember the miibus has already been detached), and that panics later here: mii_mediachg(mii); When we reset IFF_UP, rl_ioctl(SIOCSIFFLAGS) silently exits and no harm is done. So the question is: how do we prevent this from happening without resetting IFF_UP. One possible solution would be to add sc->detaching, similar to sc->suspended, abd check it in rl_ioctl(). Cheers, --=20 Ruslan Ermilov ru@FreeBSD.org FreeBSD committer --S5HS5MvDw4DmbRmb Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (FreeBSD) iD8DBQFDKo4gqRfpzJluFF4RAgwpAJ9XUqVw6jUfvNIhgXxyPBEiybgaJACeNHE1 5zkD9pY0litznIDunXgrCMo= =2nIV -----END PGP SIGNATURE----- --S5HS5MvDw4DmbRmb--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050916091928.GG88456>