Author: glebius
Date: Fri May 27 17:31:02 2016
New Revision: 300854
URL: https://svnweb.freebsd.org/changeset/base/300854

Log:
  Plug route reference underleak that happens with FLOWTABLE after r297225.
  
  Submitted by: Mike Karels <mike karels.net>

Modified:
  head/sys/netinet/ip_output.c
  head/sys/netinet6/ip6_output.c

Modified: head/sys/netinet/ip_output.c
==============================================================================
--- head/sys/netinet/ip_output.c        Fri May 27 17:07:07 2016        
(r300853)
+++ head/sys/netinet/ip_output.c        Fri May 27 17:31:02 2016        
(r300854)
@@ -701,7 +701,11 @@ sendit:
                IPSTAT_INC(ips_fragmented);
 
 done:
-       if (ro == &iproute)
+       /*
+        * Release the route if using our private route, or if
+        * (with flowtable) we don't have our own reference.
+        */
+       if (ro == &iproute || ro->ro_flags & RT_NORTREF)
                RO_RTFREE(ro);
        else if (rte == NULL)
                /*

Modified: head/sys/netinet6/ip6_output.c
==============================================================================
--- head/sys/netinet6/ip6_output.c      Fri May 27 17:07:07 2016        
(r300853)
+++ head/sys/netinet6/ip6_output.c      Fri May 27 17:31:02 2016        
(r300854)
@@ -1053,7 +1053,11 @@ sendorfree:
                IP6STAT_INC(ip6s_fragmented);
 
 done:
-       if (ro == &ip6route)
+       /*
+        * Release the route if using our private route, or if
+        * (with flowtable) we don't have our own reference.
+        */
+       if (ro == &ip6route || ro->ro_flags & RT_NORTREF)
                RO_RTFREE(ro);
        return (error);
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to