Linus Torvalds 动手改进 Linux 用户模式堆栈扩展


时至今日,Linus Torvalds 实际上已经很少会亲自动手写内核代码;更多的是忙于监督上游的内核开发社区、审查代码、管理发布,并在邮件列表中进行讨论。不过近日,他就为 Linux 6.5 进行了将近 500 行的 code rework ,以改进用户模式的堆栈扩展代码

他在合并报告中解释称:

这修改了我们的用户模式堆栈扩展代码,使其在修改 VM 布局之前始终获取 mmap_lock 进行写入。

实际上这是我们在技术上应该做到的事情,但是因为我们并不严格地需要它,所以我们有点偷懒("机会主义"听起来好多了,不是吗?)。并且在我们需要的地方设置了这个 hack,会在不进行适当锁定的情况下就地扩展堆栈 vma。

而且效果很好。我们只需要改变 vm_start(或者,在 grow-up stacks 的情况下,vm_end),再加上一些使用 anon_vma 锁和 mm>page_table_lock 的特殊的临时锁,这一切都相当简单明了。

也就是说这一切都很好,直到 Ruihan Li 指出,现在 vma 布局使用 maple tree code,我们真的不只是改变 vm_start 和 vm_end 了,而且 locking 真的被打破了。

一劳永逸地解决这个问题并做适当的 locking 其实并不可怕,但有点痛苦。 我们基本上有三种不同的堆栈扩展情况,它们的工作方式都略有不同。

目前,Linux 6.5 中的这个问题应该已经得到了解决。更多详情可查看此处。


相關推薦

2022-09-18

bers Conference 2022 大会上,外媒 ZDNet 的编辑对 Linus Torvalds 进行了一个专访。Linus 在采访中透露,大会开始前,他正在一个小岛上旅行潜水(共 6 天);如果可以选择的话,他“更愿意潜水而不愿参加会议”。 Linus 称,尽

2023-05-10

方式感到很不爽,而且它实际上也有一些小 Bug ,所以我动手清理了代码。 改动主要集中在以下几方面: 使用 __user 指针的符号位而不是屏蔽地址,并根据 TASK_SIZE 范围检查它。  get/put_user() 端做了这部分,但是 'access_ok(

2022-09-30

意接受用 Rust 开发 Linux 内核的驱动程序。 2020 年,Linus Torvalds 回应了针对 Linux 内核支持 Rust 的个人看法。他没有否定该提议,而是提倡在默认情况下开启该 feature,以确保该 feature 能被充分测试。当然该 feature 最好以自适应的

2023-08-02

因为在 Ryzen 系统上对内核造成了困扰,Linus Torvalds 最近在邮件列表中表达了对 AMD fTPM 硬件随机数生成器的不满,并提出了禁用该功能的建议。 据悉,AMD fTPM 的随机数生成器近期引起了一些卡顿问题,最初影响的是 Windows 用

2024-10-10

在日前宣布推出 Linux 6.12-rc2 的公告中,Linus Torvalds 对内核维护者 commit 信息的英文语法也提出了更多要求。 他希望,内核维护者在描述拉取请求中的变更时能够避免使用被动语态,更多的使用主动语态、命令式语气。 我

2023-06-29

Linus Torvalds最近在Linux 6.5合并窗口中对一个性能优化补丁进行了改进。 该补丁旨在为csum_partial函数提供大幅吞吐量提升和降低延迟,该函数在Linux内核中通常被用于校验和(Checksumming)。 csum_partial 函数用于从文件系统到网络的校

2024-08-23

tiveCon + Open Source Summit + AI_dev China 2024 在香港开幕。 Linus Torvalds 今天出席了大会,并与早期 Linux 内核贡献者 Dirk Hohndel(现任 Verizon 开源项目办公室负责人)进行了现场交谈。 Linus 表示这是他第一次来香港,虽然 Linux 基金会在

2024-07-17

Linus Torvalds 在内核邮件列表宣布推出 Linux Kernel 6.10,以及开启 6.11 合并窗口。 6.10 的新特性包括: 移除对旧 Alpha CPU 的支持 支持 x32 子架构的影子堆栈(shadow-stack) RISC-V 系统支持 Rust 语言 支持部分 Windows NT 同步原语

2023-04-17

Linus Torvalds 的好友兼 Linux 发展的重要人物 Lars Wirzenius 发文详细讲述了他记忆中的 Linux 称,作为现在全球范围内都相当成功的一个项目,Linux 的开端其实并不起眼。 Linux 诞生之初的一些代码是由 Linus Torvalds 与 Lars Wirzenius 合写

2023-05-30

初是为给学生讲解操作系统的运作细节而开发。 Linus Torvalds 也曾表示自己开发的 Linux  曾受到 MINIX 的影响,但只是理念和精神上的鼓舞,实际两个操作系统的设计相去甚远。 MINIX 的开发早已停滞不前,从 git 仓库的状

2022-08-16

有在这个版本中出现……也许会在 Linux 6.1 中合并。Linus Torvalds 还注意到最近出现的一些 Linux 内核崩溃,这些崩溃似乎是因为 VirtIO 合并,并且已经在解决中。 有关该版本的详细改动,可在 Linux 6.0-rc1 公告中查看。 有意思的是

2023-05-02

作为 x86/mm 的一部分发送到了 Linux 6.4 的合并窗口。Linus Torvalds 在周五进行了合并,拉取了英特尔工程师提交的 LAM 启用代码(尽管 Linus 个人仍然不喜欢该功能的名称)。 这次 Linus 没有对 LAM 的代码提出任何根本性的反对意见,

2024-10-25

(维护者名录)文件除名。 这一提交已于上周日被 Linus Torvalds 拉取并包含于 6.12-rc4 版本的代码中。 Greg K-H 并未详述这项更新的具体原因,仅含糊其辞地表示该更改是“由于某些合规性要求”,并指出“(相关人员)提供充足

2022-08-30

Linus Torvalds 发布了 Linux Kernel 6.0 的第三个 RC 版本,正式版有望在 10 月初推出。据介绍,6.0 将会支持更多的硬件、引入内核方面的创新,以及其他令人期待的变化。 上周也刚好是 Linus Torvalds 宣布启动 Linux 内核的 31 周年