Author: mav
Date: Wed Jul  1 08:08:56 2009
New Revision: 195231
URL: http://svn.freebsd.org/changeset/base/195231

Log:
  Fix infinite loop in ng_iface, that happens when packet passes out via
  two different ng interfaces sequentially due to tunnelling.
  
  PR:           kern/134557
  Submitted by: Mikolaj Golub
  Approved by:  re (kensmith)
  MFC after:    3 days

Modified:
  head/sys/netgraph/ng_iface.c

Modified: head/sys/netgraph/ng_iface.c
==============================================================================
--- head/sys/netgraph/ng_iface.c        Wed Jul  1 07:37:21 2009        
(r195230)
+++ head/sys/netgraph/ng_iface.c        Wed Jul  1 08:08:56 2009        
(r195231)
@@ -382,7 +382,8 @@ ng_iface_output(struct ifnet *ifp, struc
        }
 
        /* Protect from deadly infinite recursion. */
-       while ((mtag = m_tag_locate(m, MTAG_NGIF, MTAG_NGIF_CALLED, NULL))) {
+       mtag = NULL;
+       while ((mtag = m_tag_locate(m, MTAG_NGIF, MTAG_NGIF_CALLED, mtag))) {
                if (*(struct ifnet **)(mtag + 1) == ifp) {
                        log(LOG_NOTICE, "Loop detected on %s\n", ifp->if_xname);
                        m_freem(m);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to