Clear knlist before destroying it in tap(4) and tun(4). This fixes later

crash, when a kqueue descriptor tries to dereference appropriate knotes.

Approved by:	re (kib)
This commit is contained in:
glebius 2013-10-02 20:44:36 +00:00
parent 3f1d7fea0e
commit 515e096f72
2 changed files with 2 additions and 0 deletions

@ -220,6 +220,7 @@ tap_destroy(struct tap_softc *tp)
CURVNET_SET(ifp->if_vnet);
destroy_dev(tp->tap_dev);
seldrain(&tp->tap_rsel);
knlist_clear(&tp->tap_rsel.si_note, 0);
knlist_destroy(&tp->tap_rsel.si_note);
ether_ifdetach(ifp);
if_free(ifp);

@ -258,6 +258,7 @@ tun_destroy(struct tun_softc *tp)
if_free(TUN2IFP(tp));
destroy_dev(dev);
seldrain(&tp->tun_rsel);
knlist_clear(&tp->tun_rsel.si_note, 0);
knlist_destroy(&tp->tun_rsel.si_note);
mtx_destroy(&tp->tun_mtx);
cv_destroy(&tp->tun_cv);