公開:

【CVE-2024-50098】Linux kernelのUFSシャットダウン時のデッドロック問題が修正、システムの安定性が向上

text: XEXEQ編集部
(記事は執筆時の情報に基づいており、現在では異なる場合があります)


記事の要約

  • Linux kernelのUFS停止時にSDEV_OFFLINEを設定する更新
  • 音声ドライバーのデッドロック問題を解決
  • UFS停止後のI/O処理でエラーを返すように改善

Linux kernelのUFSシャットダウン時のデッドロック問題が解決

Linux kernelにおいて、UFSのシャットダウン時に発生していたデッドロック問題の修正が2024年11月5日に公開された。音声ドライバーがファームウェアバイナリを読み込む際にmutex_lockを保持したままblk_mq_submit_bio()で待機している状態で、全てのLUのscsi_devicesに対してSDEV_QUIESCEが設定されることでデッドロックが発生していた問題が確認されている。[1]

この問題を解決するため、WLUNを除く全てのLUに対してSDEV_OFFLINEを設定する方式が採用された。UFSシャットダウン後に発生するI/O処理に対してエラーを返すことで、デッドロックの発生を防止する仕組みが実装されたことになる。

この更新により、特に起動初期段階での再起動時に発生していたシステムのハングアップ問題が解消された。ファームウェアの読み込みとストレージデバイスの停止処理が競合することなく、安全なシャットダウンプロセスが実現できるようになった。

Linux kernelの脆弱性対策まとめ

項目 詳細
CVE番号 CVE-2024-50098
影響を受けるバージョン Linux 5.14から6.1.113まで
修正方法 SDEV_OFFLINEの設定による対応
対象コンポーネント scsi:ufs:core
修正内容 UFSシャットダウン時のデバイス状態制御の改善

デッドロックについて

デッドロックとは、複数のプロセスが互いに相手の処理完了を待ち続けることで、システム全体が停止してしまう状態のことを指す。主な特徴として以下のような点が挙げられる。

  • 複数のリソースが互いに待ち合う状態
  • システムの処理が完全に停止する
  • 手動での介入が必要になる場合が多い

Linux kernelにおけるデッドロック問題は、特にデバイスドライバーの停止処理において発生しやすい傾向がある。今回のUFSの事例では、ドライバーがmutex_lockを保持したままI/O処理を待機する状態で、デバイスのシャットダウン処理が競合することでデッドロックが発生していた。

Linux kernelのUFSシャットダウン機能に関する考察

UFSシャットダウン時のSDEV_OFFLINE設定の導入は、システムの安定性向上において重要な一歩となっている。特にブート初期段階での再起動時におけるデッドロック問題が解消されることで、システム管理者の運用負荷が大幅に軽減されることが期待できる。

今後は、同様のデッドロック問題が他のストレージデバイスやドライバーでも発生する可能性があるため、包括的な対策が必要になるだろう。特に複数のドライバーが同時にリソースを要求する場合のロック制御や、シャットダウンシーケンスの最適化が重要な課題となる。

また、システムの起動時や停止時における各種デバイスドライバーの依存関係の管理も重要な検討事項となる。カーネルのデバイス管理機能全体を見直し、より堅牢なシャットダウン処理の実装を目指すことが望ましい。

参考サイト

  1. ^ CVE. 「CVE Record | CVE」. https://www.cve.org/CVERecord?id=CVE-2024-50098, (参照 24-11-14).

※上記コンテンツはAIで確認しておりますが、間違い等ある場合はコメントよりご連絡いただけますと幸いです。

「セキュリティ」に関するコラム一覧「セキュリティ」に関するニュース一覧
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。