去年年底英特尔将 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文章
10275浏览量
179269 -
Linux
+关注
关注
88文章
11628浏览量
217928 -
代码
+关注
关注
30文章
4941浏览量
73128
原文标题:Linus亲自修改英特尔的“屎山”代码
文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
英特尔举办行业解决方案大会,共同打造机器人“芯”动脉
英特尔修改芯片法案协议 提前获得约57亿美元现金支援
使用英特尔® NPU 插件C++运行应用程序时出现错误:“std::Runtime_error at memory location”怎么解决?
英特尔锐炫Pro B系列,边缘AI的“智能引擎”
直击Computex2025:英特尔重磅发布新一代GPU,图形和AI性能跃升3.4倍
英特尔发布全新GPU,AI和工作站迎来新选择
英特尔宣布裁员20% 或2万人失业
为什么无法检测到OpenVINO™工具套件中的英特尔®集成图形处理单元?
请问OpenVINO™工具套件英特尔®Distribution是否与Windows® 10物联网企业版兼容?
英特尔®NCS2运行演示时“无法在启动后找到启动设备”怎么解决?
英特尔任命王稚聪担任中国区副董事长
英特尔代工或引入多家外部股东
英特尔带您解锁云上智算新引擎
英特尔推出全新英特尔锐炫B系列显卡

Linus亲自修改英特尔的“屎山”代码
评论