In the Linux kernel, the following vulnerability has been resolved:
ALSA: timer: drain a slaves callback before its master detaches it
snd_timer_close_locked() drains the closing instances own in-flight callback (IFLG_CALLBACK) before freeing it, but not its slaves. When a master instance is closed, remove_slave_links() clears each slaves ->timer; the slaves own close then reads timer == NULL and takes the branch that skips the drain entirely (snd_timer_stop_slave() also no-ops on a NULL timer). So a slave whose callback is still running when the master is closed is freed underneath the live callback, leading to use-after-free.
Drain the slaves too before remove_slave_links() severs them. snd_timer_stop() has already taken this instance off the active list, so no new slave callback can be queued. Take the slaves off the ack list so a pending one cant fire either, then wait for any that is already in flight.