• Takashi Iwai's avatar
    ALSA: core: Add async signal helpers · ef34a0ae
    Takashi Iwai authored
    Currently the call of kill_fasync() from an interrupt handler might
    lead to potential spin deadlocks, as spotted by syzkaller.
    Unfortunately, it's not so trivial to fix this lock chain as it's
    involved with the tasklist_lock that is touched in allover places.
    
    As a temporary workaround, this patch provides the way to defer the
    async signal notification in a work.  The new helper functions,
    snd_fasync_helper() and snd_kill_faync() are replacements for
    fasync_helper() and kill_fasync(), respectively.  In addition,
    snd_fasync_free() needs to be called at the destructor of the relevant
    file object.
    
    Link: https://lore.kernel.org/r/20220728125945.29533-2-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    ef34a0ae
core.h 15.8 KB