From owner-freebsd-hackers@FreeBSD.ORG Sun Jan 18 09:28:08 2004 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5AA6416A4CE for ; Sun, 18 Jan 2004 09:28:08 -0800 (PST) Received: from smtp.mho.com (smtp.mho.net [64.58.4.6]) by mx1.FreeBSD.org (Postfix) with SMTP id D928A43D58 for ; Sun, 18 Jan 2004 09:28:05 -0800 (PST) (envelope-from scottl@freebsd.org) Received: (qmail 55995 invoked by uid 1002); 18 Jan 2004 17:28:03 -0000 Received: from unknown (HELO freebsd.org) (64.58.1.252) by smtp.mho.net with SMTP; 18 Jan 2004 17:28:03 -0000 Message-ID: <400AC1B5.4080407@freebsd.org> Date: Sun, 18 Jan 2004 10:26:13 -0700 From: Scott Long User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.5) Gecko/20031103 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Ruslan Ermilov References: <20040118124502.GD29936@FreeBSD.org.ua> <20040118132304.GE29936@FreeBSD.org.ua> In-Reply-To: <20040118132304.GE29936@FreeBSD.org.ua> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit cc: hackers@FreeBSD.org Subject: Re: [CHECKER] bugs in FreeBSD X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jan 2004 17:28:08 -0000 Looks good to me if you want to commit it, thanks! Scott Ruslan Ermilov wrote: > On Sun, Jan 18, 2004 at 02:45:02PM +0200, Ruslan Ermilov wrote: > >>Scott, >> >>Attached is the patch that fixes memory leak according to the below report. >> > > Attached is the corrected patch that doesn't do a waiting malloc() > while interrupts are blocked. Yes I know that splbio() is a no-op > these days. ;) > > >>On Fri, Jan 16, 2004 at 04:09:34PM -0800, Paul Twohey wrote: >> >>>--------------------------------------------------------- >>>[BUG] though we should demote things that are not locals. >>>/u2/engler/mc/freebsd/sys/i386/compile/GENERIC/../../../dev/ips/ips.c:148:ips_add_waiting_command:ERROR:LEAK:148:154: pointer=waiter from RO=malloc(-1) [s=550,pop=551,pr=1.00] [rank=med] leaked! [z=1.0] [success=5] >>> >>> ips_command_t *command; >>> ips_wait_list_t *waiter; >>> unsigned long memflags = 0; >>> if(IPS_NOWAIT_FLAG & flags) >>> memflags = M_NOWAIT; >>>Start ---> >>> waiter = malloc(sizeof(ips_wait_list_t), M_DEVBUF, memflags); >>> if(!waiter) >>> return ENOMEM; >>> mask = splbio(); >>> if(sc->state & IPS_OFFLINE){ >>> splx(mask); >>>Error ---> >>> return EIO; >>> } >>> command = SLIST_FIRST(&sc->free_cmd_list); >>> if(command && !(sc->state & IPS_TIMEOUT)){ >>>--------------------------------------------------------- > > > > Cheers, > > > ------------------------------------------------------------------------ > > Index: ips.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/ips/ips.c,v > retrieving revision 1.6 > diff -u -p -r1.6 ips.c > --- ips.c 27 Nov 2003 08:37:36 -0000 1.6 > +++ ips.c 18 Jan 2004 13:16:00 -0000 > @@ -169,6 +169,7 @@ static int ips_add_waiting_command(ips_s > mask = splbio(); > if(sc->state & IPS_OFFLINE){ > splx(mask); > + free(waiter, M_DEVBUF); > return EIO; > } > command = SLIST_FIRST(&sc->free_cmd_list);