CVE-2026-93168 in Linux
要約
〜によって VulDB • 2026年09月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
dmaengine: xilinx_dma: xilinx_dma_poll_timeoutにおけるCPUストールの修正
現在、delay_us=0かつ満たされない条件を指定してxilinx_dma_poll_timeoutを呼び出すと、CPUが長時間ビジーウェイトし、タイムアウトが発生するまでに大きな遅延が生じてCPUがストールします。
これは、poll_timeout_us_atomic関数においてwall clock time(実時間)の大幅な過小評価が行われていることが原因です。コミット7349a69cf312(「iopoll: read_poll_timeout_atomic()でtimekeepingを使用しない」)によりktime_getの使用が中止されましたが、その結果delay_us=0の場合にwall clock timeの過小評価が非常に大きくなるという問題が生じています。本来であれば約XILINX_DMA_LOOP_COUNTマイクロ秒後にタイムアウトされるべきところが、実際には「XILINX_DMA_LOOP_COUNT * 1000 * (poll_timeout_us_atomic内のforループのオーバーヘッドにかかる時間)」만큼の時間が掛かり、XILINX_DMA_LOOP_COUNT=1000000の場合これは数分に相当します。これを修正するため、delay_usにゼロ以外の値を使用します。delay_us=10を設定することで、DMA転送開始時のホットパスにおける遅延を最小限に抑えつつ、予期せぬハードウェア障害が発生した場合でもCPUストールを防ぎます。
delay_us=0の場合の一回限りの測定では、タイムアウト時にCPUが約7分間ビジーウェイトすることが確認されました。このパッチ(delay_us=10適用後)を適用すると、計測されたタイムアウトは1,053,428マイクロ秒となり、XILINX_DMA_LOOP_COUNTで指定されている期待値である1,000,000マイクロ秒とほぼ同等になります。
delay_usの値に対して定数XILINX_DMA_POLL_DELAY_USを追加します。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.