Author: thompsa
Date: Thu Jul  7 20:02:09 2011
New Revision: 223846
URL: http://svn.freebsd.org/changeset/base/223846

Log:
  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

Modified:
  head/sys/net/if_lagg.c

Modified: head/sys/net/if_lagg.c
==============================================================================
--- head/sys/net/if_lagg.c      Thu Jul  7 18:07:03 2011        (r223845)
+++ head/sys/net/if_lagg.c      Thu Jul  7 20:02:09 2011        (r223846)
@@ -1221,14 +1221,15 @@ lagg_input(struct ifnet *ifp, struct mbu
        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);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to