kern/146031: [snd_hda] race condition when kldunload snd_hda
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
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:
>> 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
>> 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...
More information about the freebsd-multimedia