• Takashi Iwai's avatar
    ALSA: pcm: oss: Unlock mutex temporarily for sleeping at read/write · 146f6697
    Takashi Iwai authored
    ALSA PCM OSS layer calls the generic __snd_pcm_lib_xfer() helper for
    the actual transfer of the audio data.  The xfer helper may sleep long
    for waiting for the enough space becoming empty for read/write, and
    it does unlock/relock for the substream lock.  This works fine, so
    far, but a slight problem specific to OSS layer is that OSS layer
    wraps yet more mutex (runtime->oss.params_lock) over
    __snd_pcm_lib_xfer() call; so this mutex is still locked during a
    possible long sleep, and it prevents the whole ioctl and other actions
    applied to the given stream.
    
    This patch adds the temporarily unlock and relock of the mutex around
    __snd_pcm_lib_xfer() call in the OSS layer to be more friendly to the
    concurrent accesses.  The long mutex protection itself shouldn't be a
    real issue for the normal systems, and its influence appears only on
    strange things like fuzzers.
    
    Link: https://lore.kernel.org/r/20200214171643.26212-1-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    146f6697
pcm_oss.c 86.3 KB