代码质量
搜索文档
“完全是垃圾!”Linus 炮轰Linux MMC代码更新:连编译都过不了,测试根本没做
36氪· 2026-02-12 20:57
事件概述 - Linux内核创始人Linus Torvalds在Linux 7.0开发周期中,严厉驳回了计划合入的MMC子系统代码修改,称其“完全是垃圾”、“没经过测试的破烂”,导致相关优化彻底无缘Linux 7.0版本 [1] 涉及的子系统与技术 - MMC子系统是Linux内核中负责管理MMC、SD及SDIO总线协议的驱动框架,驱动eMMC、SD卡等存储设备以及Wi-Fi、蓝牙等通过SDIO接口连接的非存储外设 [2] - 该子系统负责设备初始化、协议处理及读写调度等底层工作,是手机、嵌入式设备及部分服务器设备中存储与无线通信部件不可或缺的一部分 [2] 计划中的代码修改内容 - 被驳回的MMC更新包含多项功能迭代,例如:为NXP IW61x WiFi芯片添加设备ID支持、加入对2025年之后生产日期的识别支持、针对部分Kingston eMMC优化安全擦除和TRIM操作、清理DW_MMC代码、在mtk-sd驱动中新增对联发科MT8189的支持,以及对多个SHDCI驱动的更新 [4] - 从功能层面看,这些改动并不激进,更像是一次常规迭代 [4] 代码被拒的核心原因 - 提交的代码违反了内核社区的核心流程,未先进入linux-next仓库进行整合测试,该仓库的作用是在主线合入前发现跨子系统冲突、编译问题及集成错误 [5] - 代码本身存在严重缺陷,甚至无法通过编译,Linus指出当`CONFIG_MULTIPLEXER=m`时,构建系统会生成`mux-core.o`,但头文件中的条件编译使用了`ifdef CONFIG_MULTIPLEXER`,这不会成立,因为实际定义的是`CONFIG_MULTIPLEXER_MODULE`,从而导致了一系列重定义错误 [5] - Linus明确指出提交`ad314348ceb4`是“彻头彻尾、未经测试的垃圾” [6] 处理结果与社区标准 - Linus拒绝了维护者在本合入窗口期内提交任何“修复版”的pull request,明确表示在Linux 7.0周期内不会再从该维护者处拉取任何代码 [7] - 他允许维护者在Linux 7.1周期再次尝试提交,但前提是代码必须进入过linux-next仓库并经过正确测试 [7] - 此次事件被视为对既定开发流程的纠偏,Linux内核通过linux-next等严格测试环节来保障代码质量与稳定性,这种对流程和质量的坚持是Linux主线在数十年高频迭代中保持相对稳定的关键 [7][8]