OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
important diff to test

From: Henning Brauer (lists-openbsdtechbsws.de)
Date: Fri Aug 01 2008 - 17:19:43 CDT


everybody seeing network related crashes, please try this.
we have some mbuf corruption issue. could be pf stuff. could be
anythng else too, really. tho I admit it is somewhat likley something
on the pf changes is the problem :)

Index: if_gif.c
===================================================================
RCS file: /cvs/src/sys/net/if_gif.c,v
retrieving revision 1.49
diff -u -p -r1.49 if_gif.c
--- if_gif.c 7 May 2008 13:45:35 -0000 1.49
+++ if_gif.c 1 Aug 2008 22:17:22 -0000
-213,6 +213,9 gif_start(ifp)
                  */
                 m->m_flags &= ~(M_BCAST|M_MCAST);
 
+ /* clear state key ptr to prevent incorrect linking */
+ m->m_pkthdr.pf.statekey = NULL;
+
                 /* extract address family */
                 family = AF_UNSPEC;
                 tp = *mtod(m, u_int8_t *);
Index: if_gre.c
===================================================================
RCS file: /cvs/src/sys/net/if_gre.c,v
retrieving revision 1.44
diff -u -p -r1.44 if_gre.c
--- if_gre.c 26 Jun 2008 05:42:20 -0000 1.44
+++ if_gre.c 1 Aug 2008 22:17:22 -0000
-225,6 +225,9 gre_output(struct ifnet *ifp, struct mbu
 
         m->m_flags &= ~(M_BCAST|M_MCAST);
 
+ /* clear state key ptr to prevent incorrect linking */
+ m->m_pkthdr.pf.statekey = NULL;
+
 #if NBPFILTER >0
         if (ifp->if_bpf)
                 bpf_mtap_af(ifp->if_bpf, dst->sa_family, m, BPF_DIRECTION_OUT);
Index: if_pppoe.c
===================================================================
RCS file: /cvs/src/sys/net/if_pppoe.c,v
retrieving revision 1.22
diff -u -p -r1.22 if_pppoe.c
--- if_pppoe.c 26 Jun 2008 05:42:20 -0000 1.22
+++ if_pppoe.c 1 Aug 2008 22:17:22 -0000
-873,6 +873,9 pppoe_output(struct pppoe_softc *sc, str
             sc->sc_state, sc->sc_session,
             ether_sprintf((unsigned char *)&sc->sc_dest), m->m_pkthdr.len));
 
+ /* clear state key ptr to prevent incorrect linking */
+ m->m_pkthdr.pf.statekey = NULL;
+
         m->m_flags &= ~(M_BCAST|M_MCAST);
         sc->sc_sppp.pp_if.if_opackets++;
         return (sc->sc_eth_if->if_output(sc->sc_eth_if, m, &dst, NULL));
Index: if_tun.c
===================================================================
RCS file: /cvs/src/sys/net/if_tun.c,v
retrieving revision 1.93
diff -u -p -r1.93 if_tun.c
--- if_tun.c 7 May 2008 05:51:12 -0000 1.93
+++ if_tun.c 1 Aug 2008 22:17:22 -0000
-550,6 +550,9 tun_output(struct ifnet *ifp, struct mbu
                 /* call ether_output and that will call tunstart at the end */
                 return (ether_output(ifp, m0, dst, rt));
 
+ /* clear state key ptr to prevent incorrect linking */
+ m0->m_pkthdr.pf.statekey = NULL;
+
         M_PREPEND(m0, sizeof(*af), M_DONTWAIT);
         if (m0 == NULL)
                 return (ENOBUFS);

--
Henning Brauer, hbbsws.de, henningopenbsd.org
BS Web Services, http://bsws.de
Full-Service ISP - Secure Hosting, Mail and DNS Services
Dedicated Servers, Rootservers, Application Hosting - Hamburg & Amsterdam