• Takashi Iwai's avatar
    ALSA: pcm: Call snd_pcm_unlink() conditionally at closing · b51abed8
    Takashi Iwai authored
    Currently the PCM core calls snd_pcm_unlink() always unconditionally
    at closing a stream.  However, since snd_pcm_unlink() invokes the
    global rwsem down, the lock can be easily contended.  More badly, when
    a thread runs in a high priority RT-FIFO, it may stall at spinning.
    
    Basically the call of snd_pcm_unlink() is required only for the linked
    streams that are already rare occasion.  For normal use cases, this
    code path is fairly superfluous.
    
    As an optimization (and also as a workaround for the RT problem
    above in normal situations without linked streams), this patch adds a
    check before calling snd_pcm_unlink() and calls it only when needed.
    Reported-by: default avatarChanho Min <chanho.min@lge.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    b51abed8
pcm_native.c 101 KB