]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
ALSA: timer: Fix UAF at snd_timer_user_params()
authorTakashi Iwai <tiwai@suse.de>
Sat, 6 Jun 2026 16:11:41 +0000 (18:11 +0200)
committerTakashi Iwai <tiwai@suse.de>
Sun, 7 Jun 2026 07:23:44 +0000 (09:23 +0200)
commit053a401b592be424fea9d57c789f66cd5d8cec11
treec80938a1ddfa82dfbdd1d4879d31cf0d98dba653
parentda3039e91d1f835874ed6e9a33ea19ee80c2cb92
ALSA: timer: Fix UAF at snd_timer_user_params()

At releasing a timer object, e.g. when a userspace timer
(CONFIG_SND_UTIMER) gets closed and snd_timer_free() is called, it
tries to detach the timer instances and release the resources.
However, it's still possible that other in-flight tasks are holding
the timer instance where the to-be-deleted timer object is associated,
and this may lead to racy accesses.

Fortunately, most of ioctls dealing with the timer instance list
already have the protection with register_mutex, and this also avoids
such races.  But, SNDRV_TIMER_IOCTL_PARAMS isn't protected, hence the
concurrent ioctl may lead to use-after-free.

This patch just adds the guard with register_mutex to protect
snd_timer_user_params() for covering the code path as a quick
workaround.  It's no hot-path but rather a rarely issued ioctl, so the
performance penalty doesn't matter.

Reported-by: Kyle Zeng <kylebot@openai.com>
Tested-by: Kyle Zeng <kylebot@openai.com>
Cc: <stable@vger.kernel.org>
Link: https://patch.msgid.link/20260606161145.1933447-2-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/timer.c