来自公众号:OSC开源社区
根据 Linux 内核邮件列表的消息,社区近日讨论了是否要为内核采用现代 C 语言标准。
虽然 Linux 内核在快速发展,但它同时依赖着一些非常古老的工具,其中之一就是内核代码仍在使用 1989 年版本的 C 语言标准——此标准在 30 多年前内核项目启动之前就已经编写完成。从讨论结果来看,这一情况有望在 5.18 版本内核中改变。
Jakob Koschel 在向 Linus Torvalds 递交的补丁 (https://lkml.org/lkml/2022/2/17/1032) 中修复了内核链表相关的预测执行漏洞。
起因是 Jakob 发现了一个问题,Linux 内核广泛使用由 struct list_head 定义的双向链表:
struct list_head {
struct list_head *next, *prev;
};
struct foo {
int fooness;
struct list_head list;
};
struct foo *iterator;
list_for_each_entry(iterator, &foo_list, list) {
do_something_with(iterator);
}
/* Should not use iterator here */