CVE-2026-89979 in Linux
摘要
由 VulDB • 2026-09-17
在 Linux 内核中,已修复以下漏洞:
ALSA: pcm: 修复非原子操作与 trigger-start 之间的竞态条件
我们保护了原子 PCM 操作之间并发状态转换的竞态问题,但针对非原子操作(hw_params、hw_free 和 prepare)与原子操作之间的检查并不完善;虽然在 hw_params 等操作的开始处存在对冲突 PCM 状态的检查,但在执行非原子 PCM 操作期间,仍可能发出原子 PCM 操作。一个典型的场景是:线程 A 为已准备好的流重新发出 PREPARE 或 HW_PARAMS 命令,而另一个线程 B 在准备操作中间触发了 PCM start(启动)。尽管这通常不会导致严重问题,但可能会引发不一致性,如 syzkaller 报告的那样(例如 ODEBUG 警告)。
存在多种原子 PCM 操作,基本上唯一的问题是 PCM start,因为它从 PREPARED 状态开始运行。其他触发命令(stop 等)用于 RUNNING 或其他特殊状态,因此它们作为前置条件被过滤掉。
此补丁旨在防止在非原子操作期间执行 PCM trigger-start,以解决上述问题。幸运的是,hw_params、hw_free 和 prepare 操作会调用 snd_pcm_buffer_access_lock(),这可用于在 PCM trigger(触发器)处检查并发操作——如果可能,它会将 runtime->buffer_accessing 设置为负值,因此 PCM trigger 只需检查 runtime->buffer_accessing 的值;如果是负数,则表示正在运行并发的非原子 PCM 操作。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.