• Takashi Iwai's avatar
    ALSA: seq: Fix a potential UAF by wrong private_free call order · 1f8763c5
    Takashi Iwai authored
    John Keeping reported and posted a patch for a potential UAF in
    rawmidi sequencer destruction: the snd_rawmidi_dev_seq_free() may be
    called after the associated rawmidi object got already freed.
    After a deeper look, it turned out that the bug is rather the
    incorrect private_free call order for a snd_seq_device.  The
    snd_seq_device private_free gets called at the release callback of the
    sequencer device object, while this was rather expected to be executed
    at the snd_device call chains that runs at the beginning of the whole
    card-free procedure.  It's been broken since the rewrite of
    sequencer-device binding (although it hasn't surfaced because the
    sequencer device release happens usually right along with the card
    device release).
    
    This patch corrects the private_free call to be done in the right
    place, at snd_seq_device_dev_free().
    
    Fixes: 7c37ae5c ("ALSA: seq: Rewrite sequencer device binding with standard bus")
    Reported-and-tested-by: default avatarJohn Keeping <john@metanate.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210930114114.8645-1-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    1f8763c5
seq_device.c 7.09 KB