Linus Torvalds 已经启动了 Linux Kernel 的新开发周期,并宣布了 5.10 分支的首个候选版本更新。这同时也是一次历史性的转变,在本次更新中弃用了延续十多年、是众多安全漏洞根源的 set_fs (),并且修复了 XFS 文件系统中的 “Year 2038” 问题。
弃用 set_fs ()
set_fs ()功能允许 Linux kernel 覆盖地址空间,在对于处理 英特尔 的 286/386 处理器非常有用。在内核周报中,Torvalds 解释称 set_fs () 功能将检查用户区的副本是否已实际移动到用户区或者内核区。如2010年CVE-2010-4258中所述,它可用于覆盖任何内核位置并获得许可。
该漏洞在 2010 的时候已经得到修复。不过伴随着时间的推移,芯片设计人员开始使用其他更优秀的内存管理技术上。Torvalds 表示在 x86、PowerPC 、S390 和 RISC-V 架构中已经禁用了这种类型的磁盘空间拥塞。
Torvalds 表示,set_fs ()功能大致可以追溯到 Linux 的初代版本,并一直保留到现在。Torvalds 表示这虽然不是太大的变化,但是依然非常有趣,这对大部分用户来说并没有关系,只是一个很小的脚注。在移除了set_fs ()功能之后,Torvalds 表示其他部分一切正常。
在 Linux Kernel 邮件日志中写道:
对于我来说,最有趣的改变就是从 Christoph 移除了 setf_fs (),已经通过 AI Viro 进行合并,你可以在下方的 Mergelog 中查看。这并不是什么大的调整但非常有趣,因为确认用户空间的副本是否真实移动到用户空间或者内核空间的整个 set_fs () 功能最早可以追溯到 Linux 初版。尽管这个名称完全是历史性的,但这个概念依然存在。
我们仍然有“ set_fs()”,并且并非所有架构都已转换为新标准,但是x86,PowerPC,S390和RISC-V架构以及所有架构都禁止这种类型的空间拥塞。在这个方向上进行了基础工作。我希望其他体系结构也将摆脱这种非常古老的模型,尽管要摆脱它可能需要一些时间。
Year 2038 问题
Linux Kernel 5.10 对 XFS 文件系统进行了大幅的改进。这个“大时间戳”功能是对其时间戳和 inode 编码功能进行重构,以将时间戳作为 64 位纳秒计数器进行处理,并通过移位来增加有效大小。
现在,这使XFS可以很好地克服2038年的问题(在那里,以秒为单位存储自1970年以来的时间将不再适合有符号的32位整数,因此无法环绕)到现在的2486年。
使用以下命令创建新的XFS文件系统:启用bigtime允许的时间戳范围是1901年12月至2486年7月,而不是1901年12月至2038年1月。为了保持向后兼容,默认情况下当前未启用big timestamps功能。
相比较 Linux 5.9,Linux 5.10-RC1 新增了 70.4 万行代码,删除了大约 41.9 万行代码。而作为对比,从 Linux 5.8 升级到 Linux 5.9-RC1 新增了 72.7 万代码,删除了 27 万行代码;而从 Linux 5.7 升级到 Linux 5.8-RC1 新增了 97.3 万代码,删除了 42.9 万行代码。因此虽然它的更改幅度并不是最大的,但也排在前列,引入了相当多的改进。
对于 Linux 5.10-RC1,Torvalds 评论道:“这[指更新规模]要比我预期的要大,虽然合并窗口要比 5.8 小,但也没有小太多。5.8 依然是我们最大的发布版本。我无法确定未来是否会继续保持这种上升趋势(我认为未来可能会经历一段稳定期)。Linux Kernel 5.10 的开发工作开展的非常顺利,我想不会出现和 5.9 一样延迟一周的情况。我看不到任何巨大的危险信号,并且合并窗口也没有对我造成任何不寻常的问题。我认为下面的合并日志可以使您大致了解正在发生的事情,但是如果您对详细信息感兴趣,请查看git树。”
责任编辑:kj005
文章投诉热线:156 0057 2229 投诉邮箱:29132 36@qq.com