Skip site navigation (1)Skip section navigation (2)
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>