去年年底英特尔将 LAM(Linear Address Masking :线性地址掩码) 功能提交到 Linux 6.2 的合并窗口,但该功能受到 Linus 的批评并拒绝合并。在经历了一段时间的代码改进后,Linus 终于同意将 LAM 代码合并到 Linux 6.4 窗口。
但 Linus 似乎仍对英特尔工程师提交的代码不太满意,在合并了 LAM 代码后,先是写了一个使 access_ok () 独立于 LAM 的新补丁,而后又亲手写了多个补丁对 LAM 代码进行了优化。

在最新提交的 LAM 优化补丁中,Linus 解释了自己的动机:
我对此版本中的 LAM(“线性地址掩码”)的 “access_ok ()” 的完成方式感到很不爽,而且它实际上也有一些小 Bug ,所以我动手清理了代码。
改动主要集中在以下几方面:
使用 __user 指针的符号位而不是屏蔽地址,并根据 TASK_SIZE 范围检查它。 get/put_user () 端做了这部分,但是 ‘access_ok ()’ 做了天真的 “掩码和范围检查”,它不仅生成多余的代码,还意味着 __access_ok 本身的任务做得不好, copy_from_user_nmi () 没有得到正确的检查。
将所有 64 位代码仅移动到 64 位版本的头文件中,这样就不会污染共享的 x86 代码,也不会误导用户 LAM 可以在 32 位环境中工作。
修复地址掩码中的 Bug(这不重要,只是完全删除了错误的代码)。
几个简单的清理,并添加了关于 access_ok () 规则的注释。
Linus 重新编写了约一百行代码来清理 LAM ,这意味着如果测试没问题, 就可以在 Linux 6.4 中顺利启用 LAM 功能。不过这次 Linus 竟然亲自动手为英特尔工程师修改 “有瑕疵的代码”,这种情况相当少见。
审核编辑 :李倩
-
英特尔
+关注
关注
61文章
10316浏览量
181051 -
Linux
+关注
关注
88文章
11810浏览量
219513 -
代码
+关注
关注
30文章
4976浏览量
74358
原文标题:Linus亲自修改英特尔的“屎山”代码
文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
超越台积电?英特尔首个18A工艺芯片迈向大规模量产
锐宝智联入选英特尔首批尊享级合作伙伴
吉方工控亮相2025英特尔技术创新与产业生态大会
英特尔举办行业解决方案大会,共同打造机器人“芯”动脉
英特尔修改芯片法案协议 提前获得约57亿美元现金支援
美国商务部推进收购英特尔10%股份 估值约达105亿美元
美国政府将入股英特尔?
使用英特尔® NPU 插件C++运行应用程序时出现错误:“std::Runtime_error at memory location”怎么解决?
英特尔锐炫Pro B系列,边缘AI的“智能引擎”
分析师:英特尔转型之路,机遇与挑战并存
英特尔先进封装,新突破
直击Computex2025:英特尔重磅发布新一代GPU,图形和AI性能跃升3.4倍
英特尔发布全新GPU,AI和工作站迎来新选择
英特尔代工:明确重点广合作,服务客户铸信任
Linus亲自修改英特尔的“屎山”代码
评论