Linux Audio 子系统更新(v7.2-rc1 → v7.2-rc5)
版本范围:v7.2-rc1 → v7.2-rc5**数据来源:git.kernel.org sound/ **提交数:75 / 有效补丁(去 merge):69 / 活跃贡献者:50+ / 活跃域名:20+
总体判断
v7.2-rc1→rc5 期间音频子系统核心主题是 ALSA timer/seq 核心竞态修复。ALSA timer 暴露两个严重并发缺陷:(1) slave callback UAF——snd_timer_close_locked() 关闭 master 时未 drain slave 的 in-flight callback,slave 实例在 callback 仍运行时被释放;(2) utimer 并发重入——TRIGGER ioctl 无序列化直接调用snd_timer_interrupt(),两个线程可并发进入同一 timer 实例的 callback。ALSA seq 侧发现 queue timer 重开竞态——queue_delete() close 与 free 之间 borrower 可重新 open 已清除的 timeri。这三项均为内核核心基础设施缺陷,影响面远超音频驱动本身。
HDA Realtek alc269 收到 10 个独立 quirk 补丁,覆盖联想 Legion Pro 7 16ARX8H、MECHREVO 无界、戴尔 QCM1255 / Pro QC1255、华硕 ROG Ally X(耳机输出 + 耳麦分别修复)、HP Pavilion x360 / EliteBook 830 G8 / ZBook 8 G2a / Victus 15-fa0xxx / Laptop 15-fd0xxx / 15-dw0xxx、同方 X6xx45xU、Framework F111:0010、三星 750XBE/730XBE、Lunnen Ground 14、Alienware x16 R2,是补丁量最大的单驱动。
AMD ACP 平台稳定性修复密集:ACP PCI 驱动 resume 路径禁用 MSI(解决 resume 后音频不可用)、IRQ 返回值 bitwise OR 误用为 logical OR、ACP version 字符串错误、ACP70 SDCA quirks 链接错误、ACP70 ACPI match 新增 tas2783 智能功放支持、ACP70 DMI override 扩展 ASUS TUF 平台、yc DMIC quirk 新增 MSI Vector A16 HX A8WIG 和 Alienware m15 R7 AMD。
Cirrus Logic cs35l56 两项关键修复:probe() 死锁(I2C/SPI 总线上 snd_soc_register_component 在 probe 返回前被调用,与 init_completion 形成死锁)和 init_completion 信号改用 complete_all()(原 complete() 只唤醒一个 waiter,多次 probe 时后续 waiter 永远阻塞)。
安全修复分析
安全类补丁集中在 ALSA 核心、USB 音频和 ASoC codec 的错误路径:
高危(建议优先追踪):
其中 ALSA timer/seq 核心占高危修复的绝大部分,说明ALSA 核心基础设施的并发安全是此期间安全热点。timer slave UAF 和 utimer 并发重入影响所有使用 ALSA timer 的驱动和用户态程序;seq queue timer 重开竞态影响 MIDI 应用。USB 音频侧 us144mkii 的 work UAF 和 anchor list 腐败是 disconnect 路径的系统性问题——cancel_work_sync() 与 usb_kill_anchored_urbs() 之间的窗口让 URB completion 重排 work 后无人再 cancel。
| | |
|---|
| | master 关闭未 drain slave callback,实例在运行中被释放 |
| | TRIGGER ioctl 无序列化,两线程并发进入同一 callback |
| | close/delete 窗口内 borrower 重新 open 已清除 timeri |
| | cancel_work_sync 与 kill_anchored_urbs 窗口致 UAF |
| | 冗余 usb_anchor_urb 破坏双链表致遍历 UAF |
| | |
| | 未校验 actual_length 即读取 buf[1]/buf[2]/buf+3 |
| | 固件 count 未校验,短回复或 32 位溢出致越界 |
| | |
新功能分析
1. ASoC: qcom Eliza 音频支持 — sc8280xp 平台新增 Eliza 机器驱动
2. ASoC: amd acp70 + tas2783 — ACP70 ACPI match 新增 tas2783 智能功放支持
3. ALSA: usb-audio 新设备 quirk — iBasso DC-Elite(delay quirk)、JBL Quantum650 Wireless(FIXED_RATE)、Redragon H510-PRO Wireless、Musical Fidelity M6s DAC(skip DSD)
4. ASoC: Intel sof_sdw 新 quirk — 0x17aa383c sidecar amps + cs42l43 及多款新 Dell 笔记本
关键贡献者
| | | |
|---|
| | | ALSA 核心修复 + HDA quirk 合入协调 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
企业分布:Cirrus Logic(7)、SUSE(6)、AMD(5)、NXP(3)、TI(3)、Realtek(2)、Intel(2)、Qualcomm(2)、Renesas(2)。
驱动更新
AMD ACP:PCI resume 禁用 MSI、IRQ 返回值逻辑 OR 误用、ACP version 字符串错误、SDCA quirks 链接错误、ACP70 DMI override 扩展 ASUS TUF、yc DMIC quirk 新增 MSI Vector A16 HX / Alienware m15 R7
Cirrus Logic:cs35l56 wmfw 缺失时 probe 失败、cs35l56 init_completion 改用 complete_all()、cs35l56 probe() 死锁修复、cs35l41 ACPI mute 对象校验与释放
NXP i.MX:fsl_sai resume 后 BCLK 毛刺(BYP 位未清除致 MCLK 直出)、imx-card shutdown 时跳过活跃 DAI 的 sysclk 复位
TI tas2781/tas675x:tas2781 固件描述字符串越界、cali_data.total_sz 清理、tas675x 温度范围寄存器位域修复 + READ_ONCE 并发保护
其他:rt712-sdca io_init 重置修复静音耳机、meson aiu S/PDIF datapath 软复位、sun4i-codec H616 playback_only、fs210x resume cache write-through、Conexant mic bias threshold 移除、HDA HDMI keep-alive 与格式切换冲突、bt-sco wideband DAI DAPM widget 重名
子系统热点
| | |
|---|
| | 机器码 quirk 密集修复,覆盖 10+ 款机型 |
| | 核心竞态修复(slave UAF + utimer 重入 + queue timer 重开) |
| | resume MSI + IRQ + version + SDCA + DMI quirk |
| | probe 死锁 + init_completion + wmfw + ACPI mute |
| | caiaq 越界 + us144mkii UAF + anchor 腐败 + quirk + mixer |
| | 固件越界 + cali_data + 温度位域 + READ_ONCE |
核心 ⇔ 驱动联动小结:ALSA 核心(timer/seq)的竞态修复是基础设施级安全加固,timer slave UAF 和 utimer 并发重入影响所有使用 ALSA timer 的驱动和用户态程序;seq queue timer 重开竞态影响 MIDI 应用。HDA HDMI keep-alive 与格式切换冲突是 Intel 显示音频在 KAE 场景下的协议层问题,需驱动侧(hdmi codec)配合。AMD ACP 的 MSI/resume 修复和 NXP fsl_sai 的 BCLK 毛刺是各自平台 runtime PM 路径的闭环修复。Cirrus cs35l56 的 probe 死锁和 init_completion 信号修复,与 SoundWire 总线枚举时序强耦合——probe 必须返回后总线驱动才枚举设备,所有寄存器访问必须延迟,两边修复形成闭环。