From 6069a2c0bdada7b581c7c3ba8308c6dd672f27a1 Mon Sep 17 00:00:00 2001 From: Andrew Thompson Date: Thu, 7 Jul 2011 20:02:09 +0000 Subject: [PATCH] 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(-) diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index 2548c65f4f3..d540966ab4c 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);