在Linux内核中,有些代码已经被弃用,但这些代码中有些可能会让人感到不安,也许你不知道它们的功能,但它们确实存在。这些代码是如此血污,以至于它们已经被禁用或注释掉,但它们的存在却是不能被忽略的。

1. Syscall Tracepoints

通常在钩子中使用的syscall tracepoints是内核开发人员的最爱之一。但是,远古的syscall tracepoints版本(2.6.x)不安全,因为它们没有正确地管理内部数据结构。这个问题在现代的系统中已经得到了修复,但旧版本的Linux内核中,这些代码仍然是一样令人不安的。

2. Real-Time Scheduling

虽然Linux内核中的实时调度程序已经被实现多年,但是,它们在最近几年中只是有限地得到了广泛使用。实时内核正在快速发展,而旧版本的内核中的实时调度程序,可谓是简陋而又危险。在处理高度时变且需要高度精度的应用程序时,这个问题就会变得更为严重。

3. SCSI Error Handling

SCSI是一种用于磁盘存储系统的接口。在早期的版本中,SCSI错误的处理方式可能会导致系统崩溃。这也是Linux内核中为数不多的危险代码之一。同时,这种问题也是很难处理的,因为SCSI系统不同于其他系统。

4. Compact Memory Management

Compact memory管理器是Linux内核中的一个实验性组件,它的主要作用是释放系统中没有使用的内存,以便让系统更加稳定。但是,它的实现却远不及它的想法灵活,因为它存在内部状况的不一致性问题。这样的问题可以导致内核的崩溃或泄漏,因此,它已经被弃用并且不再使用。

结论

虽然这些代码已被弃用,但是它们仍然存在于Linux内核中,因此无论我们喜欢与否,我们都需要认真对待它们。在内核开发的行业中,血污的历史遗留代码问题是非常普遍的。我们需要认真对待这个问题,并采取措施来避免潜在的安全问题。

因此,我们必须尽可能地让我们的内核版本保持最新,并注意我们是如何使用它们的。在保持安全和环境的适应性之间,我们必须保持一种平衡和反思。

详情参考

了解更多有趣的事情:https://blog.ds3783.com/