第 7 章 内核
内核转储现在在高内存负载下可靠生成
在以前的版本中,如果内核 panic 在高内存负载下发生,在某些情况下会出现死锁,且不会生成内核转储。在这个版本中修复了
vmalloc_sync_all ()
函数,以避免等待可能永远不会释放的 spinlock。因此,会正确收集内核转储。(BZ#1146727)
Runqueues 不再忽略时钟更新
在以前的版本中,在 CPU 过量使用的系统中运行queue 很容易地忽略时钟更新。因此,实时 runqueue 有限,这会阻止关键任务及其依赖任务运行。在这个版本中,runqueues 不会在延长时间内忽略时钟更新。因此,关键任务及其依赖任务可以在这样的情形中运行。(BZ#1212959)
dma_pin_iovec_pages ()不再导致系统内存不足
在以前的版本中,当 dma_pin_iovec_pages () 函数请求大量内存但请求失败时,将无法释放保留的内存。因此,系统会耗尽内存。在这个版本中,dma_pin_iovec_pages ()现在可以正确地分配内存,并在不需要时释放内存。因此,上面描述的问题不再发生。(BZ#1459263)
修复了 cgroups
死锁
在使用
cgroups
时,系统死锁会因为竞争条件而发生。在这个版本中,添加了一个临时解决方案来修复竞争条件,这可以防止死锁发生。(BZ#1463754)
失败的 execve ()
的审计现在可以正常工作
在以前的版本中,当记录失败
execve ()
系统调用的参数时,Linux 内核中的审计调用使用其父进程的参数。因此,审计可以使用指向非映射地址的指针,进程使用分段错误终止。在这个版本中,审计已被修复,恢复失败的 execve ()
的检查。因此,当无法成功执行 ()后,进程不再错误地终止
。(BZ#1488822)
vmcp 现在成功执行 cp
在以前的版本中,使用 GFP_DMA 标志的内核内存分配会导致 vmcp 命令无法执行 cp 命令。这个版本不再需要使用 GFP_DMA,并允许 GFP_KERNEL 标志改为分配内核内存。因此,vmcp 会成功执行 cp。(BZ#1496105)