Linux 内核升级 C 语言标准
根据 Linux 内核邮件列表的消息,社区近日讨论了是否要为内核采用现代 C 语言标准。 虽然 Linux 内核在快速发展,但它同时依赖着一些非常古老的工具,其中之一就是内核代码仍在使用 1989 年版本的 C 语言标准——此标准在 30 多年前内核项目启动之前就已经编写完成。从讨论结果来看,这一情况有望在 5.18 版本内核中改变。 Jakob Koschel 在向 Linus Torvalds 递交的补丁(Proposal for speculative safe list iterator) 中修复了内核链表相关的预测执行漏洞。 起因是 Jakob 发现了一个问题,Linux 内核广泛使用由 struct list_head 定义的双向链表: struct list_head { struct list_head *next, *prev; }; 这种结构体通常被嵌入到其他结构体中,通过这种方式,开发者可以使用任何感兴趣的结构类型制作链表。除此之外,内核还提供了大量可用于遍历和操作链表的函数和宏。其中之一是list_for_each_entry(),这是一个伪装成控制结构...