Linux Audio 子系统更新(v7.2-rc5 → v7.2-rc7)
版本范围:v7.2-rc5 → v7.2-rc7 | 数据来源:git.kernel.org sound/
提交数 82 | 有效补丁(去 merge)80 | 活跃贡献者 30+ | 活跃域名 20+
一、总体判断
v7.2-rc5→rc7 期间音频子系统核心主题是 USB 音频 OOB/UAF 安全修复与 SDCA jack 检测竞态治理。USB 音频侧暴露多个严重内存安全缺陷:
- Type II inbound URB 的 DMA buffer 比 URB packet 数少一个 packet,导致 HCD 写越界;
fill_max 标志置位时 maxsize 未同步提升到 curpacksize,DMA buffer 远小于实际传输长度,直接破坏 kernel heap;- implicit-feedback 同步包未 clamp 到
maxframesize,过大的 frame count 经 stride 缩放后进入 playback 队列驱动越界传输; snd_usbmidi_akai_output() OOB 写、RME Digiface status 栈信息泄漏、ump_to_endpoint() UAF、out_cvts double free。
这五项均为 USB 音频核心路径缺陷,影响所有对应设备。
ALSA 核心侧修复两个高危并发缺陷:
snd_timer_close_locked() 置 SNDRV_TIMER_IFLG_DEAD 后从不清除,seq timer reopen 命中已 dead 实例时 snd_timer_instance_free() 释放仍挂在 open_list_head/master_list 的对象,UAF;initialize_timer() 中 tmr->ticks = 1000000000 / (r * freq),用户可控 resolution r=2^63 使 64 位乘积 wrap 为 0,除零 panic;snd_pcm_drain() linked stream 在 unlink 时未唤醒 sleep 队列,drainer 带着挂在已释放流上的 on-stack wait entry 返回,后续 wake_up() 走已释放栈帧。
ASoC SDCA 收到 11 个补丁(Charles Keepax 主导),系统性治理 jack 检测竞态:DAPM widget/route 创建远早于 ALSA control,IRQ 在 control 未就绪时注册导致 DAPM 图与硬件状态不一致。修复思路是新增 component 级 fixup_controls 回调,把 IRQ 注册推迟到 control 创建之后,并拆分 sdca_irq_cleanup_late() 处理 devm 生命周期。配套 4 个 SDCA bug fix(Control Range 校验、UMP message size robust、FDL 路径 firmware 释放、devm_acpi_table_put 指针修正)。
HDA Realtek alc269 收到 9 个 quirk 补丁,覆盖 HP Dragonfly Folio G3、HP Victus 16-e0xxx(mute LED)、HP Laptop 14s-dr1xxx(mute LED)、HP Pavilion All-in-One 27-ca1xxx、Infinix INBOOK X3 Slim、TongFang X6SP45xU、Acer Nitro 5 AN515-46(headset mic 修复)、Legion 7 15ASH11(Mic Mute LED),是补丁量最大的单驱动。
AMD ACP yc DMI quirk 密集新增 7 款机型:MSI Raider A18 HX A7VHG、Xiaomi RedmiBook 16 2025、HP Victus 16-e1xxx、Lenovo Legion 7 15ASH11、Acer Aspire AG14-22P、MSI Crosshair A16 HX D7WFKG、ASUS EXPERTBOOK PM1403CDA。
TI tas2562 收到 7 个 volume 修复补丁(Mark Brown + Haidar Lee),系统性修正 DVC 系数写入顺序、lookup table 错误条目、默认数字音量、event 生成、写入校验。TI tas2781 两项关键修复:ACPI reference handling(error path 二次释放 ACPI device reference + acpi_get_first_physical_node 返回 NULL 未校验)和 SINEGAIN2 寄存器用错 sin_gn[]/sin_gn2[] 字段致第二 pilot tone gain 校准写错地址。
二、安全修复分析
安全类补丁集中在 USB 音频、ALSA 核心、ASoC codec 的错误路径。
高危(建议优先追踪):
USB 音频 OOB/UAF 占高危修复的绝大部分,说明 USB 音频核心路径的内存安全是此期间安全热点。Type II URB OOB 和 fill_max DMA 越界影响所有使用对应格式/标志的 USB 音频设备;ALSA timer IFLG_DEAD UAF 和 seq 除零影响所有使用 ALSA timer/seq 的驱动和用户态程序;pcm linked drain UAF 影响所有使用 linked stream drain 的应用。
| | |
|---|
| Type II inbound URB OOB 写 | data_ep_set_params buffer_size 用 pre-increment packet count,Type II 端点 buffer 少一个 packet |
| | fill_max 置位时 maxsize 未提升到 curpacksize,DMA 写破坏 kernel heap |
| implicit-feedback frame 未 clamp | 同步包经 stride 缩放后超 maxframesize,playback 队列驱动越界传输 |
| | snd_usbmidi_akai_output() |
| | |
| ump_to_endpoint | |
| out_cvts | |
| IFLG_DEAD | close 置 dead 后不清除,seq reopen 命中已 dead 实例释放仍挂链对象 |
| initialize_timer | 用户可控 resolution=2^63 使 r*freq wrap 为 0 |
| linked drain on-stack UAF | unlink 未唤醒 sleep 队列,drainer 带挂在已释放流上的 wait entry 返回 |
| hwdep mmap fault offset 未 bound | |
| capture URB resubmit 未 re-anchor | resubmission 未重新 anchor 致 URB 脱锚 |
| fcp_meter_ctl_get | |
| | |
| | error path 二次释放 ACPI device reference + NULL physical node 未校验 |
| | header 要求的 Control Range 未校验 |
| UMP message size 不 robust | |
| | |
| devm_acpi_table_put | |
| | tx/wsa macro enum kcontrol 访问越界 |
三、新功能分析
1. ASoC: amd yc DMI quirk 扩展 — 新增 7 款机型(MSI Raider A18 HX、Xiaomi RedmiBook 16 2025、HP Victus 16-e1xxx、Lenovo Legion 7 15ASH11、Acer Aspire AG14-22P、MSI Crosshair A16 HX、ASUS EXPERTBOOK PM1403CDA)
2. ASoC: Intel soc-acpi NVL match — 新增 sof_rt5682 entry 到 NVL match table
3. ALSA: usb-audio 新设备 quirk — 共 7 款:
Logitech PRO X 2 LIGHTSPEED(MIXER_GET_CUR_BROKEN)C-Media CM6206(GET_SAMPLE_RATE)Corsair Virtuoso later revisionJKY Technology Q2A(iface reset + delay)Generic USB Headphone(iface reset + delay)Razer Barracuda X 2.4(dB map)M-Audio Fast Track Ultra(sticky mixer 回归修复)
4. ASoC: rt5645 Kconfig user selectable — rt5645 Kconfig symbol 改为用户可选
5. ASoC: component fixup_controls 回调 — ASoC core 新增 component 级 fixup_controls 回调,供 SDCA IRQ 注册时序使用
四、关键贡献者
| | | |
|---|
| | | SDCA jack 检测竞态治理 + SDCA bug fix |
| | | ASoC fix 分支合入 + tas2562 volume 修复 |
| | | USB 音频/ALSA 核心 OOB/UAF 安全修复 |
| | | SOF ipc4/topology 修复 + cs35l41/45/cs4265 reg_defaults 排序 |
| | | AMD yc DMI quirk + HDA Realtek quirk |
| | | USB 音频 mixer 回归 + 6fire UAF + 合入协调 |
| | | ALSA timer/seq 核心修复 + pcm linked drain |
| | | tas2562 DVC 系数 + lookup table |
| | | lpass-wsa/tx-macro enum kcontrol |
| | | SoundWire PCMSyCM reset + SOF topology |
企业分布:Cirrus Logic(11)、Intel(8)、xbow(8)、SUSE(4)、Kylin(6)、NXP(2)、Realtek(1)、TI(9,含 tas2562/tas2781)、Google(2)、Vivo(2)、Uniontech(2)。
五、驱动更新
USB 音频:Type II URB OOB、fill_max DMA 越界、implicit-feedback frame clamp、akai output OOB、RME Digiface 栈泄漏、ump_to_endpoint UAF、out_cvts double free、usx2y hwdep mmap bound、us144mkii re-anchor、FCP OOB、6fire probe UAF、M-Audio Fast Track Ultra sticky mixer 回归、新设备 quirk 7 款
ALSA 核心:timer IFLG_DEAD UAF、seq initialize_timer 除零、pcm linked drain on-stack UAF、ump double free
HDA Realtek:9 款机型 quirk(HP Dragonfly Folio G3、HP Victus 16-e0xxx mute LED、HP Laptop 14s-dr1xxx mute LED、HP Pavilion AIO 27-ca1xxx、Infinix INBOOK X3 Slim、TongFang X6SP45xU、Acer Nitro 5 AN515-46 headset mic、Legion 7 15ASH11 Mic Mute LED)
HDA tas2781:ACPI reference handling 修复、SINEGAIN2 校准数据字段修正
AMD ACP yc:7 款 DMI quirk 新增
ASoC SDCA:jack 检测竞态治理(fixup_controls 回调 + IRQ 注册时序 + devm 生命周期)+ 4 个 bug fix(Control Range、UMP size、FDL firmware、devm 指针)
TI tas2562:DVC 系数写入顺序、lookup table 错误条目、默认数字音量、event 生成、写入校验、volume setting 综合 fix
TI tas2781:ACPI reference handling、SINEGAIN2 校准字段
Cirrus cs35l41/45/cs4265:reg_defaults 表排序(非功能性,配合 regmap 优化)
NXP fsl_asrc/easrc:m2m_init 错误路径 cleanup 改 goto 链
SOF:ipc4-pcm IPC timeout 后继续 pipeline trigger、sof-audio widget setup 错误路径、topology acpi mach 使用、ipc4-topology copier IPC payload refresh
SoundWire Intel:hda_sdw_bpt_close 重置 PCMSyCM 寄存器
其他:rt722 reset codec 修复 warm reboot 后异常音、max98090/max98095 mclk IS_ERR 校验、sophgo cv1800b adc volume return 1、lx6464es 16-bit period byte count、rt5645 Kconfig user selectable、lpass-tx/wsa-macro enum kcontrol 越界
六、子系统热点
| | |
|---|
| | OOB/UAF/栈泄漏密集安全修复 + 新设备 quirk |
| | |
| | |
| | |
| | |
| | timer UAF + seq 除零 + pcm drain UAF + ump double free |
| | ipc4-pcm/sof-audio/topology 错误路径与状态修复 |
| | |
| | |
核心 ⇄ 驱动联动小结
USB 音频核心路径的 OOB/UAF 修复是基础设施级安全加固,Type II URB 和 fill_max DMA 越界影响所有使用对应格式/标志的 USB 音频设备,implicit-feedback frame clamp 影响所有异步 playback。ALSA timer IFLG_DEAD UAF 和 seq 除零影响所有使用 ALSA timer/seq 的驱动和用户态程序;pcm linked drain UAF 影响所有使用 linked stream drain 的应用。ASoC SDCA jack 检测竞态治理是 Cirrus + ASoC core 联动:DAPM 图创建时序与 ALSA control 创建时序的鸿沟是根因,需 core 侧新增 fixup_controls 回调 + SDCA 侧 IRQ 注册推迟,两边修复形成闭环。HDA tas2781 的 ACPI reference 失衡和 SINEGAIN2 字段错误是 Kylin 维护者在 tas2781 智能功放路径上的闭环修复。TI tas2562 的 7 个 volume 修复是 TI + ASoC maintainer 联动的系统性修正,覆盖 DVC 系数写入顺序、lookup table、event 生成、写入校验多个层面。