Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Apr 2004 00:58:00 -0700 (PDT)
From:      Don Lewis <truckman@FreeBSD.org>
To:        green@FreeBSD.org
Cc:        cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/dev/sound/pcm buffer.c
Message-ID:  <200404290758.i3T7w07E066491@gw.catspoiler.org>
In-Reply-To: <200404290251.i3T2pxBB032840@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 28 Apr, Brian Feldman wrote:
> green       2004/04/28 19:51:59 PDT
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/dev/sound/pcm    buffer.c 
>   Log:
>   Don't do malloc(M_WAITOK) for sound buffers while locks are held.
>   
>   Revision  Changes    Path
>   1.23      +1 -1      src/sys/dev/sound/pcm/buffer.c

The correct fix is to not hold the offending lock across the
sndbuf_create() call and nuke the (tmpbuf == NULL) test.  At present, if
the malloc() call fails, the channel will not be relocked, and my panic
the system with an MTX_ASSERT() failure.  I wouldn't bet that the ENOMEM
failure is properly handled.

I pretty much know how I want to fix the locking, but haven't had time
to do it.  There are a bunch of other places in the sound code with
similar problems.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200404290758.i3T7w07E066491>