雖然最近 Linus Torvalds 主要處理將新代碼添加到 Linux 內核中並充當看門人,而不是自己積極開發新內核代碼,但對於正在開發中的 Linux 6.4,他發現自己做了一些編碼。

如上週所述,他親自負責清理 Linux 6.4 的 x86 內存複製代碼。本週他合併了更多自己的代碼,因為他對英特爾工程師合併的一些代碼提出了質疑,這些代碼是他們線性地址掩碼支持的一部分。

回到去年年底Linux 6.2的日子裡,Linus因為各種技術問題拒絕了當時的Intel LAM代碼。英特爾隨後針對 Linux 6.4 對其進行了重新設計。


這一次 Linus 合併了 Intel LAM 在 Linux 6.4 中作為這種新的 CPU 功能讓用戶空間將元數據存儲在指針的某些位中,而無需在使用前將其屏蔽掉。英特爾 LAM-與 Arm TBI 一樣-可用於虛擬機、分析/消毒/標記和其他應用程序。但這一次,他親自整理了一些不太理想的代碼。

Linus 在一個新的合併 週五:

合併我的 x86 uaccess 更新分支。

此版本中的 LAM(“線性地址掩碼”)更新讓我對“access_ok()”的完成方式感到不滿,而且它實際上也有一些小錯誤。這是我對代碼的清理:

-使用 __user 指針的符號位而不是屏蔽地址並根據 TASK_SIZE 範圍檢查它。

我們已經為 get/put_user() 端做了這部分,但是’access_ok()’做了幼稚的“掩碼和範圍檢查”事情,它不僅生成討厭的代碼,而且最終意味著__access_ok 本身做得不好,因此 copy_from_user_nmi() 沒有得到正確的檢查。

-將所有 64 位代碼僅移動到 64 位版本的頭文件中,這樣我們就不會不必要地污染共享的 x86 代碼並使其看起來像 LAM 可以在32位也是。

-修復地址掩碼中的錯誤(這並不重要:在這種情況下,修復只是完全刪除錯誤代碼)。

-幾個簡單的清理並添加了關於 access_ok() 規則的評論。

因此英特爾 LAM 仍然準備好使用 Linux 6.4,Torvalds 重新設計了大約 100 個用於清理它的代碼行。
現在 Linux 用戶空間準備使用 Intel LAM。

Categories: IT Info