From 9d0e437193c863bf1af8d6104a6d9d7b8c7aebe0 Mon Sep 17 00:00:00 2001 From: thompsa Date: Thu, 7 Jul 2011 20:02:09 +0000 Subject: Grab the rlock before checking if our interface is enabled, it could be possible to hit a dead pointer when changing interfaces. PR: kern/156978 Submitted by: Andrew Boyer MFC after: 1 week --- sys/net/if_lagg.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'sys/net/if_lagg.c') diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index 2548c65..d540966 100644 --- a/sys/net/if_lagg.c +++ b/sys/net/if_lagg.c @@ -1221,14 +1221,15 @@ lagg_input(struct ifnet *ifp, struct mbuf *m) struct lagg_softc *sc = lp->lp_softc; struct ifnet *scifp = sc->sc_ifp; + LAGG_RLOCK(sc); if ((scifp->if_drv_flags & IFF_DRV_RUNNING) == 0 || (lp->lp_flags & LAGG_PORT_DISABLED) || sc->sc_proto == LAGG_PROTO_NONE) { + LAGG_RUNLOCK(sc); m_freem(m); return (NULL); } - LAGG_RLOCK(sc); ETHER_BPF_MTAP(scifp, m); m = (*sc->sc_input)(sc, lp, m); -- cgit v1.1