• Takashi Iwai's avatar
    ALSA: fix locking in snd_pcm_open*() and snd_rawmidi_open*() · 399ccdc1
    Takashi Iwai authored
    The PCM and rawmidi open callbacks have a lock against card->controls_list
    but it takes a wrong one, card->controls_rwsem, instead of a right one
    card->ctl_files_rwlock.  This patch fixes them.
    
    This change also fixes automatically the potential deadlocks due to
    mm->mmap_sem in munmap and copy_from/to_user, reported by Sitsofe
    Wheeler:
    
      A: snd_ctl_elem_user_tlv(): card->controls_rwsem => mm->mmap_sem
      B: snd_pcm_open(): card->open_mutex => card->controls_rwsem
      C: munmap: mm->mmap_sem => snd_pcm_release(): card->open_mutex
    
    The patch breaks the chain.
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    399ccdc1
pcm.c 31 KB