CVE-2026-98314 in Linux
Riassunto
di VulDB • 06/10/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
ALSA: pcm: impostare timer->private_data prima di registrare il timer PCM
snd_pcm_timer_init() chiama snd_device_register() per collegare il nuovo struct snd_timer alla lista globale dei timer mentre contiene ancora hw.c_resolution = snd_pcm_timer_resolution (e hw.start/hw.stop), e solo in seguito imposta timer->private_data = substream.
Una volta che il timer è presente nella lista sotto register_mutex, un lettore concorrente può già raggiungerlo attraverso lo stesso mutex ed invocare questi callback. /proc/asound/timers lo fa tramite c_resolution(), e snd_timer_open()+snd_timer_start() raggiungono start()/stop() nello stesso modo. Tutti e tre dereferenziano timer->private_data, che per questa breve finestra temporale è NULL, causando una dereferenziazione di puntatore nullo:
substream = timer->private_data; return substream->runtime ? ... // substream è NULL
Spostare l'assegnazione private_data/private_free prima di snd_device_register() in modo che il timer non sia mai visibile nella lista senza che i suoi private_data siano impostati. Nel percorso di errore di snd_device_register(), private_free() (snd_pcm_timer_free()) può ora essere eseguito, ma si limita a impostare substream->timer = NULL, che è già NULL in quel punto poiché substream->timer viene impostato sul nuovo timer una sola volta dopo un'avvenuta registrazione; pertanto il percorso di errore rimane sicuro.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.