CVE-2026-80828 in Linux
要約
〜によって VulDB • 2026年09月04日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ALSA: usb-audio - システムレジュームエラー後の完全なクリーンアップ
システムレジュームの失敗により、再起動するまでサウンドカードが使用不能になる場合があります。usb_audio_resume()は、snd_usb_pcm_resume()またはsnd_usb_mixer_resume()の失敗時にerr_outへジャンプします。このエラーパスではout:ブロック(D0状態を復元しchip->num_suspended_intfをデクリメントする処理)がスキップされます。
その結果、カードはSNDRV_CTL_POWER_D3hot状態のままとなり、後の制御アクセスでsnd_power_ref_and_wait()内でブロッキングします。USBコアはインターフェースレジュームコールバックのエラーをログに記録しますが、このコールバックの再試行を行わないため、後続のコールバックではスキップされたクリーンアップ処理が完了しません。
usb_audio_suspend()は成功時にnum_suspended_intfを増加させます。システムレジュームコールバックは、コンポーネントのレジュームに失敗した場合でも、システムサスペンドのカウントを消費(デクリメント)する必要があります。そうでないと、残ったカウント値により後のサスペンドおよびレジュームのサイクルが不整合を起こします。
このクリーンアップ処理はランタイムレジュームエラーには適用しないでください。ランタイムPMでは-EAGAINや-EBUSYの再試行が可能であり、別のサスペンドコールバックを必要としません。カウント値は、そのサスペンド状態にあるインターフェースを示し続ける必要があります。その他のランタイムレジュームエラーは、PMコア内でruntime_errorラッチを引き起こすだけで、即座にコールバックの再試行を行うわけではありません。
システムレジュームのエラーパスにおける両方の処理(D0復元とnum_suspended_intfデクリメント)は長年の問題です。コミット88a8516a2128a ("ALSA: usbaudio: implement USB autosuspend")により、err_outがD0復元の後に配置されました。その後、コミット862b2509d157c ("ALSA: usb-audio: Fix inconsistent card PM state after resume")でnum_suspended_intf--の処理がout:ブロック内に移動しました。これにより、エラーパスでは両方の操作がスキップされる状態になっていました。
このエラーパスに到達するために第三者コードは必要ありません。snd_usb_mixer_resume()はmixer status URBを持つデバイスにおいてusb_submit_urb()の結果を返すsnd_usb_mixer_activate()で終了します。また、mixer->private_resumeフックもscarlett2_init_notify()を通じて失敗する可能性があります。snd_usb_pcm_resume()はUAC3パワードメインに対してSET_CURリクエストを発行し、デバイスがリクエストストールした場合に-EPIPEまたは-EIOを返すことがあります。
システムレジュームエラーの場合のみ、コンポーネントのエラーをout:へルーティングしてください。ランタイムレジュームのエラーについては引き続きerr_outを通じて返します。後続のコンポーネントレジューム段階はスキップされたままとなりますが、元のエラーはUSBコアに到達し続けます。デバイスが回復していない場合、後の転送処理で失敗する可能性があります。
私はAudient iD14 MkIにおいて、ツリー外の診断用ミキサーレジュームフックを使用してシステムレジュームの失敗を再現しました。パッチ未適用のカーネル上で-EIOをインジェクトすると、制御リーダーがsnd_power_ref_and_wait()内でインターラプタブルでないスLEEP状態に陥り、再起動するまで回復しませんでした。このパッチを適用することで、同じ障害発生時でも制御アクセスが復元されました。また、フォールトインジェクションを無効にした後、2回目のシステムサスペンドおよびレジュームも成功しました。
VulDB is the best source for vulnerability data and more expert information about this specific topic.