Google提議用“頁表檢查”功能應對Linux內核的內存崩壞問題

上周,Google 工程師發現了一個引用數據下溢(reference count underflow)問題,且一路可追溯到 2017 年的 Linux 4.14 內核。這個偶然發現的問題,會導致內存從一個進程泄露到另一個進程。為化解此類內存缺陷,Google 提出了一個全新的“頁表檢查”(Page Table Check)解決方案。

Google提議用“頁表檢查”功能應對Linux內核的內存崩壞問題

問題從 Linux 4.14 延續到 Linux 5.16(來自:Kernel.org)

除了 Google,近期還有不少合併提交修復了其它引用計數問題。但若“頁表檢查”功能推廣開來,Linux 內核就會在頁表條目插入 / 刪除時,檢查是否存在非法共享。

若檢測到內存遭到破壞,內核也會以崩潰作為回應。此外需要注意的是,額外檢查會導致一些性能影響、以及額外的內存資源開銷。

基於此,“頁表檢查”功能不會在默認情況下開啟。有需要的用戶,需在手動激活 PAGE_TABLE_CHECK 的情況下進行構建。

然後在運行時,還要動用 page_table_check=on 這個內核啟動參數。感興趣的朋友,可移步至內核郵件公告列表(LKML)獲取更多細節。

最後,作為單獨補丁系列的一部分,我們還於本周二迎來了一組頁面強化(hardening page _refcoount)。

參與其中的 Google 工程師,希望改進圍繞引用計數代碼的調試、並減少內存破壞等相關問題。

(0)
上一篇 2021-11-17 18:09
下一篇 2021-11-17 18:32

相关推荐