7.7. カーネル

IBM Z システムで、カーネルが誤検出の警告を返しなくなりました。

以前は、RHEL 8 の IBM Z システムに、ユーザーアクセスを許可する ZONE_DMA メモリーゾーンの許可されるエントリーがありませんでした。したがって、カーネルは以下のような誤検出の警告を返します。

...
Bad or missing usercopy whitelist? Kernel memory exposure attempt detected from SLUB object 'dma-kmalloc-192' (offset 0, size 144)!
WARNING: CPU: 0 PID: 8519 at mm/usercopy.c:83 usercopy_warn+0xac/0xd8
...

sysfs インターフェイスから特定のシステム情報にアクセスする際に警告が表示されました。たとえば、debuginfo.sh スクリプトを実行するなどです。

今回の更新で、ユーザー空間アプリケーションがバッファーにアクセスできるように、Direct Memory Access (DMA) バッファーにフラグが追加されました。

これにより、上記のシナリオで警告メッセージが表示されなくなります。

(BZ#1660290)

RHEL システムが tboot GRUB エントリーから期待どおりに起動する

以前は、バージョン 1.9.12-2 の tboot ユーティリティーが原因で、Trusted Platform Module (TPM) 2.0 が有効になっている一部の RHEL システムがレガシーモードでの起動に失敗していました。その結果、tboot Grand Unified Bootloader (GRUB) エントリーから起動しようとすると、システムが停止しました。RHEL 8 の新しいバージョンと tboot ユーティリティーの更新により、問題が修正され、RHEL システムが期待どおりに起動します。

(BZ#1947839)

負荷の高いコンテナーシナリオでカーネルがメモリーを正常に回収

コンテナー内の I/O およびメモリーにボリュームが制約された場合、データの競合状態によりメモリーのロックアップの回収を行うカーネルコード。データ競合は、次のような場合に発生する現象です。

  • 少なくとも 2 つの CPU スレッドが同じデータセットを同時に変更しようとします。
  • これらの CPU スレッドのいずれかは、データセットで書き込み操作を試行します。

データセットを変更するための各スレッドの正確なタイミングをもとに、結果は A、B、または AB (無決定) になります。

コンテナーがメモリー不足の状態にあると、複数の OOM (Out of Memory) による強制終了が生じ、コンテナーがロックされ、応答しなくなりました。本リリースでは、ロックおよび最適化用の RHEL カーネルコードが更新されました。その結果、カーネルは応答しなくなり、データは競合状態に影響しなくなります。

(BZ#1860031)

メモリーがオフラインの RHEL 8 により、カーネルパニックが発生しなくなりました。

以前は、開始し、オフラインとマークされたメモリーで RHEL 8 を実行すると、カーネルが初期化されていないメモリーページにアクセスしようとする場合がありました。これにより、カーネルパニックが発生していました。今回の更新で、アイドルページ追跡のカーネルメカニズムが修正され、問題が発生しなくなりました。

(BZ#1867490)

NUMA システムでは、予期しないメモリーレイアウトが発生しなくなりました。

以前のリリースでは、CONFIG_NODES_SPAN_OTHER_NODES オプションがないため、ARM64 および S390 アーキテクチャーでは NUMA システムで予期しないメモリーレイアウトが発生していました。そのため、異なる NUMA ノードのメモリー領域が交差し、低い NUMA ノードのメモリーリージョンが高 NUMA に追加されていました。

今回の更新により、NUMA システムはメモリーレイアウトの問題が発生しなくなりました。

(BZ#1844157)

rngd サービスが poll() システムコールでビジー状態にならない

バージョン 4.18.0-193.10 で始まるカーネル用に、FIPS モードの新しいカーネルエントロピーソースが追加されました。そのため、/dev/random デバイスの poll() システムコールで、rngd サービスがビジーウェイトしていました。これにより、システムが FIPS モードにある場合に CPU 時間を 100% 消費していました。今回の更新で、FIPS モードでは、/dev/random デバイスの poll() ハンドラーが、特に /dev/random デバイスに対して開発されたデフォルトのハンドラーからハンドラーに変更されました。その結果、上記のシナリオで rngd サービスが poll() でビジーウェイトしなくなりました。

(BZ#1884857)

SCHED_DEADLINE スケジューラーの HRTICK サポートが有効になっている

以前は、SCHED_DEADLINE ポリシーで設定した特定のタスクでは、高解像度のシステムタイマー (HRTICK) の機能が配置されませんでした。そのため、SCHED_DEADLINE スケジューラーを使用するこれらのタスクのスロットリングメカニズムは、これらのタスクに設定したすべてのランタイムを使用しました。この動作により、リアルタイム環境で予期しないレイテンシーが急増していました。

今回の更新により、高解像度のプリエンプションを提供する HRTICK 機能が有効になりました。HRTICK は高解像度タイマーを使用して、タスクがランタイムを完了するときにスロットリングメカニズムを強制します。その結果、この問題は上記のシナリオで発生しなくなりました。

(BZ#1885850)

tpm2-abrmd のバージョン 2.3.3.2 へのリベース

tpm2-abrmd パッケージがバージョン 2.3.3.2 にアップグレードされ、バグ修正が複数追加されました。以下は、主な変更点です。

  • 一時的なハンドルの使用を修正しました。
  • TPM Command Transmission Interface (TCTI) での部分的な読み込みを修正しました。
  • アクセスブローカーのリファクタリング

(BZ#1855177)

cxgb4 ドライバーにより、kdump カーネルでクラッシュが発生しなくなる

以前のリリースでは、vmcore ファイルに情報を保存しようとすると、kdump カーネルがクラッシュしていました。そのため、cxgb4 ドライバーにより、kdump カーネルが、後で分析するためにコアを保存できなくなります。この問題を回避するには、kdump カーネルコマンドラインに novmcoredd パラメーターを追加して、コアファイルを保存できるようにします。

RHSA-2020:1769 アドバイザリーのリリースにより、kdump カーネルがこの状況を適切に処理し、クラッシュしなくなりました。

(BZ#1708456)