去年年底英特爾將 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文章
10301瀏覽量
180474 -
Linux
+關注
關注
88文章
11760瀏覽量
219047 -
代碼
+關注
關注
30文章
4968瀏覽量
73990
原文標題:Linus親自修改英特爾的“屎山”代碼
文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
銳寶智聯入選英特爾首批尊享級合作伙伴
吉方工控亮相2025英特爾技術創新與產業生態大會
英特爾舉辦行業解決方案大會,共同打造機器人“芯”動脈
英特爾修改芯片法案協議 提前獲得約57億美元現金支援
美國政府將入股英特爾?
使用英特爾? NPU 插件C++運行應用程序時出現錯誤:“std::Runtime_error at memory location”怎么解決?
英特爾銳炫Pro B系列,邊緣AI的“智能引擎”
分析師:英特爾轉型之路,機遇與挑戰并存
英特爾先進封裝,新突破
直擊Computex2025:英特爾重磅發布新一代GPU,圖形和AI性能躍升3.4倍
英特爾發布全新GPU,AI和工作站迎來新選擇
英特爾代工:明確重點廣合作,服務客戶鑄信任
英特爾宣布裁員20% 或2萬人失業
盟通科技攜手Acontis助力英特爾虛擬化驅動工業負載整合
英特爾新篇章:重視工程創新、文化塑造與客戶需求
Linus親自修改英特爾的“屎山”代碼
評論