Permalink
Browse files

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)
  • Loading branch information...
1 parent 3f1d7fe commit 515e096f7236fe4f554e196c769fc056df993849 @glebius glebius committed Oct 2, 2013
Showing with 2 additions and 0 deletions.
  1. +1 −0 sys/net/if_tap.c
  2. +1 −0 sys/net/if_tun.c
View
@@ -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);
View
@@ -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);

0 comments on commit 515e096

Please sign in to comment.