From nobody@FreeBSD.org  Thu Mar 31 09:04:05 2011
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id F2D70106566B
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 31 Mar 2011 09:04:05 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id E52578FC16
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 31 Mar 2011 09:04:05 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p2V945ox067072
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 31 Mar 2011 09:04:05 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id p2V945CF067052;
	Thu, 31 Mar 2011 09:04:05 GMT
	(envelope-from nobody)
Message-Id: <201103310904.p2V945CF067052@red.freebsd.org>
Date: Thu, 31 Mar 2011 09:04:05 GMT
From: Artjom Nikushkin <arni@balticom.lv>
To: freebsd-gnats-submit@FreeBSD.org
Subject: ipfw pipe flush - memleak
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         156083
>Category:       kern
>Synopsis:       ipfw pipe flush - memleak
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    ae
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Mar 31 09:10:09 UTC 2011
>Closed-Date:    Thu Apr 07 11:23:49 UTC 2011
>Last-Modified:  Thu Apr 07 11:23:49 UTC 2011
>Originator:     Artjom Nikushkin
>Release:        8.2-RELEASE
>Organization:
Balticom
>Environment:
FreeBSD bsd82-test.balticom.lv 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Fri Feb 18 02:24:46 UTC 2011     root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
>Description:
After sequental pipe config/flush, dummynet hits limit of memory and `dmesg` ouputs : "ipfw: setsockopt(IP_DUMMYNET_CONFIGURE): Cannot allocate memory", and crashes. Pipe is configured with src-ip or dst-ip mask (dummynet hash pipes). 

>How-To-Repeat:
In fresh install : 
for ((i=1;$i<2000000; i=$i+1)); do ipfw pipe 1 config bw 10Mbit/s mask src-ip 0xffffffff ; ipfw -f pipe flush ; done

When Wired memory hits about 370Mb of RAM, it crashes. 
It's possible to make it crash faster - rise net.inet.ip.dummynet.hash_size up to the maximum size. 
>Fix:


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->ae 
Responsible-Changed-By: ae 
Responsible-Changed-When: Thu Mar 31 12:07:09 UTC 2011 
Responsible-Changed-Why:  
Take it. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=156083 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/156083: commit references a PR
Date: Thu, 31 Mar 2011 15:10:54 +0000 (UTC)

 Author: ae
 Date: Thu Mar 31 15:10:41 2011
 New Revision: 220203
 URL: http://svn.freebsd.org/changeset/base/220203
 
 Log:
   Fix a memory leak. Memory that is allocated for schedulers hash table
   was not freed.
   
   PR:		kern/156083
   MFC after:	1 week
 
 Modified:
   head/sys/netinet/ipfw/ip_dummynet.c
 
 Modified: head/sys/netinet/ipfw/ip_dummynet.c
 ==============================================================================
 --- head/sys/netinet/ipfw/ip_dummynet.c	Thu Mar 31 14:44:00 2011	(r220202)
 +++ head/sys/netinet/ipfw/ip_dummynet.c	Thu Mar 31 15:10:41 2011	(r220203)
 @@ -748,9 +748,10 @@ schk_delete_cb(void *obj, void *arg)
  #endif
  	fsk_detach_list(&s->fsk_list, arg ? DN_DESTROY : 0);
  	/* no more flowset pointing to us now */
 -	if (s->sch.flags & DN_HAVE_MASK)
 +	if (s->sch.flags & DN_HAVE_MASK) {
  		dn_ht_scan(s->siht, si_destroy, NULL);
 -	else if (s->siht)
 +		dn_ht_free(s->siht, 0);
 +	} else if (s->siht)
  		si_destroy(s->siht, NULL);
  	if (s->profile) {
  		free(s->profile, M_DUMMYNET);
 _______________________________________________
 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-unsubscribe@freebsd.org"
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/156083: commit references a PR
Date: Thu,  7 Apr 2011 06:01:18 +0000 (UTC)

 Author: ae
 Date: Thu Apr  7 06:01:09 2011
 New Revision: 220408
 URL: http://svn.freebsd.org/changeset/base/220408
 
 Log:
   MFC r220203:
     Fix a memory leak. Memory that is allocated for schedulers hash table
     was not freed.
   
     PR:		kern/156083
 
 Modified:
   stable/8/sys/netinet/ipfw/ip_dummynet.c
 Directory Properties:
   stable/8/sys/   (props changed)
   stable/8/sys/amd64/include/xen/   (props changed)
   stable/8/sys/cddl/contrib/opensolaris/   (props changed)
   stable/8/sys/contrib/dev/acpica/   (props changed)
   stable/8/sys/contrib/pf/   (props changed)
 
 Modified: stable/8/sys/netinet/ipfw/ip_dummynet.c
 ==============================================================================
 --- stable/8/sys/netinet/ipfw/ip_dummynet.c	Thu Apr  7 05:58:21 2011	(r220407)
 +++ stable/8/sys/netinet/ipfw/ip_dummynet.c	Thu Apr  7 06:01:09 2011	(r220408)
 @@ -747,9 +747,10 @@ schk_delete_cb(void *obj, void *arg)
  #endif
  	fsk_detach_list(&s->fsk_list, arg ? DN_DESTROY : 0);
  	/* no more flowset pointing to us now */
 -	if (s->sch.flags & DN_HAVE_MASK)
 +	if (s->sch.flags & DN_HAVE_MASK) {
  		dn_ht_scan(s->siht, si_destroy, NULL);
 -	else if (s->siht)
 +		dn_ht_free(s->siht, 0);
 +	} else if (s->siht)
  		si_destroy(s->siht, NULL);
  	if (s->profile) {
  		free(s->profile, M_DUMMYNET);
 _______________________________________________
 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-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->closed 
State-Changed-By: ae 
State-Changed-When: Thu Apr 7 11:23:18 UTC 2011 
State-Changed-Why:  
Committed to head/ and stable/8. Thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=156083 
>Unformatted:
