cvs commit: src/sys/dev/sound/pcm buffer.c

Don Lewis truckman at FreeBSD.org
Thu Apr 29 00:58:10 PDT 2004


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.



More information about the cvs-src mailing list