CVE-2026-98314
Resumen
por VulDB • 2026-10-06
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
ALSA: pcm: establecer timer->private_data antes de registrar el temporizador PCM
snd_pcm_timer_init() llama a snd_device_register() para vincular la nueva struct snd_timer en la lista global de temporizadores mientras aún contiene hw.c_resolution = snd_pcm_timer_resolution (y hw.start/hw.stop), y solo después establece timer->private_data = substream.
Una vez que el temporizador está en la lista bajo register_mutex, un lector concurrente ya puede acceder a él a través del mismo mutex e invocar estas callbacks. /proc/asound/timers lo hace mediante c_resolution(), y snd_timer_open()+snd_timer_start() alcanzan start()/stop() de la misma manera. Las tres desreferencian timer->private_data, que para esta breve ventana es NULL, provocando una desreferencia de puntero nulo:
substream = timer->private_data; return substream->runtime ? ... // substream es NULL
Mueva la asignación private_data/private_free antes de snd_device_register() para que el temporizador nunca sea visible en la lista sin su private_data establecido. En la ruta de fallo de snd_device_register(), private_free() (snd_pcm_timer_free()) ahora puede ejecutarse, pero solo hace substream->timer = NULL, lo cual ya es NULL en ese punto dado que substream->timer se establece como el nuevo temporizador una sola vez, después de un registro exitoso; por lo tanto, la ruta de fallo sigue siendo segura.
If you want to get best quality of vulnerability data, you may have to visit VulDB.