[CHECKER] bugs in FreeBSD
Scott Long
scottl at freebsd.org
Sun Jan 18 09:28:08 PST 2004
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);
More information about the freebsd-hackers
mailing list