kern/146031: [snd_hda] race condition when kldunload snd_hda sound called

Garrett Cooper gcooper at FreeBSD.org
Sun Apr 25 23:40:06 UTC 2010


The following reply was made to PR kern/146031; it has been noted by GNATS.

From: Garrett Cooper <gcooper at FreeBSD.org>
To: Garrett Cooper <gcooper at freebsd.org>
Cc: Alexander Best <alexbestms at wwu.de>, bug-followup at freebsd.org
Subject: Re: kern/146031: [snd_hda] race condition when kldunload snd_hda 
	sound called
Date: Sun, 25 Apr 2010 16:34:53 -0700

 Sorry... forgot to answer the questions.
 
 On Sun, Apr 25, 2010 at 4:31 PM, Garrett Cooper <gcooper at freebsd.org> wrote:
 > On Sun, Apr 25, 2010 at 4:26 AM, Alexander Best <alexbestms at wwu.de> wrote:
 >> running
 >>
 >> sh -c 'i=1; while [ 1 ] ; do echo "Try $i"; kldload snd_hda; kldunload snd_hda
 >> sound; : $(( i += 1 )); done'
 >>
 >> complains about sound.ko not being loaded, since unloading snd_hda.ko also
 >> unloads sound.ko. is this what you got too?
 
     Yes, because it's kldunload(2) unloads all dependent modules for
 snd_hda.ko not in use (in this case sound.ko).
 
 >> i'm not sure this logic is correct. loading snd_hda.ko also loads sound.ko,
 >> since it depends on it. however i don't see why unloading snd_hda.ko also
 >> unloads sound.ko, since sound.ko has no dependencies and can exist without any
 >> snd_*.ko module.
 
     The point was that there's a race condition if the time between
 both snd_hda.ko and sound.ko was done, s.t. not all of the pieces were
 cleaned up and/or communicated in the kernel.
 
 >> i wasn't able to trigger the panic however (command cancelled with i=350 or
 >> so).
 >>
 >> i'm running 9-CURRENT (r207154).
 
     Ok. This might have been fixed in a later revision that hasn't
 been MFCed from HEAD, but I really don't want to have to take down my
 server to test this...
 Thanks,
 -Garrett


More information about the freebsd-multimedia mailing list