第7章 カーネル
カーネルダンプは、高メモリー負荷で確実に生成されるようになりました
以前は、高いメモリー負荷でカーネルパニックが発生すると、デッドロックが発生し、カーネルダンプが生成されないことがありました。今回の更新で、リリースされることのないスピンロックの待機を回避するために、
vmalloc_sync_all ()
関数が修正されました。その結果、カーネルダンプが正しく収集されます。(BZ#1146727)
Runqueues がクロックの更新を無視しなくなりました。
以前は、CPU のオーバーコミットを備えたシステムでは、長時間にわたってクロック更新を無視することが容易になりました。その結果、リアルタイムのランタイムキューが制限され、重大なタスクとその依存タスクが実行できませんでした。この更新により、実行キューが長期間クロックの更新を無視しなくなります。その結果、重要なタスクとその依存タスクをこのような状況で実行できます。(BZ#1212959)
dma_pin_iovec_pages ()によりシステムがメモリー不足にならなくなりました。
以前は、dma_pin_iovec_pages ()関数が大量のメモリーを要求するが、要求が失敗した場合、予約されたメモリーを解放できませんでした。その結果、システムのメモリーが不足しました。今回の更新により、dma_pin_iovec_pages ()がメモリーの全量を正しく割り当て、不要な場合にメモリーを解放するようになりました。その結果、上記の問題が発生しなくなりました。(BZ#1459263)
cgroups
のデッドロックが修正されました
特定の状況において、
cgroups
を使用すると、競合状態によりシステムのデッドロックが発生しました。この更新により、競合状態を修正するワークキューが追加され、デッドロックの発生が防止されます。(BZ#1463754)
失敗し た execve ()
の監査が適切に動作するようになりました。
以前は、Linux カーネルの監査呼び出しは、失敗し
た execve ()システムコール
の引数をログに記録するときに、親プロセスの引数を使用していました。その結果、監査は、マッピングされていないアドレスへのポインターを使用し、プロセスがセグメンテーション違反で終了しました。この更新により、audit が修正され、失敗した execve ()
のチェックが元に戻されるようになりました。その結果、プロセスが失敗した後、プロセスが誤って終了しなくなり ました
。(BZ#1488822)
vmcp が正常に実行されると cpの実行が成功するようになりました。
以前は、GFP_DMA フラグを使用したカーネルメモリー割り当てにより、vmcp コマンドが cp コマンドの実行に失敗していました。今回の更新で、GFP_DMA を使用する必要がなくなり、GFP_KERNEL フラグがカーネルメモリーを割り当てることができるようになります。その結果、vmcp は cp の実行に成功します。(BZ#1496105)