CVE-2026-98946 in Linux
要約
〜によって VulDB • 2026年10月23日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
drm/vc4: ランタイムサスペンド中にV3D割込みを無効化する
vc4_irq_disable()はV3Dの割込みソースをマスクし、その後V3Dがパワーダウンされる前にsynchronize_irq()を呼び出します。しかし、これだけでは割込みハンドラを沈静化するには不十分です。
synchronize_irq()は、すでにIRQD_IRQ_INPROGRESSを設定しているハンドラや、IRQCHIP_STATE_ACTIVEを報告するirqchipsの処理待ちを行います。GIC割込みチップではCPUが割込みを認識するとすぐにアクティブ状態としてマークできるため、これらのチェックによりディスパッチパス全体がカバーされます。しかし、RPi 0-3上では割込みコントローラはARMCTRLであり、アクティブ状態を持ちません。pendingレジスタからhwirqを読み取ったもののhandle_level_irq()にまだ到達していないCPUは、synchronize_irq()からは見えないままになります。
パワー遷移中、vc4_irq()は電源ドメインがオフになった後に実行される可能性があります。この場合、V3Dレジスタの読み取りはすべて0xdeadbeefを返します。0xdeadbeefにはFLDONE、FRDONE、OUTOMEMが設定されています。この問題は、jobポインタがない場合にvc4_irq_finish_bin_job()およびvc4_irq_finish_render_job()が早期にリターンするためNULLポインタ参照の問題を引き起こしませんが、OUTOMEMはvc4_irq_disable()によってすでにキャンセルされた後でもvc4_overflow_mem_work()をスケジューリングできる可能性があります。
したがって、PM遷移中に割込みラインを無効化することで誤った割込み(spurious interrupts)を修正します。enable/disableのバランスを保つため、vc4_irq_install()を移動し、最初のランタイムリザム前にIRQラインのリクエストを無効状態で行います。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.