【活用ガイド】

JVNDB-2026-027882

LinuxのLinux Kernelにおけるリソースのロックに関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました:drm/msmのshrinkerにおけるデッドロックの修正です。Snapdragon X1 環境でPROVE_LOCKINGを有効にし、VMのリクレイムプレッシャーがかかる場合に、以下の警告が発生します。 ======================================================警告: 循環ロック依存関係の可能性を検出7.0.0-debug+ #43 Tainted: G W------------------------------------------------------kswapd0/82が取得しようとしているロック:ffff800080ec3870 (reservation_ww_class_acquire){+.+.}-{0:0}, 場所: msm_gem_shrinker_scan+0x17c/0x400 [msm]しかし、このタスクは既に以下のロックを保持しています:ffffc31709b263b8 (fs_reclaim){+.+.}-{0:0}, 場所: balance_pgdat+0x88/0x988このロックは既に新しいロックに依存しています。既存の依存チェーン(逆順)は以下の通りです:-> #2 (fs_reclaim){+.+.}-{0:0}: __lock_acquire+0x4d0/0xad0 lock_acquire.part.0+0xc4/0x248 lock_acquire+0x8c/0x248 fs_reclaim_acquire+0xd0/0xf0 dma_resv_lockdep+0x224/0x348 do_one_initcall+0x84/0x5d0 do_initcalls+0x194/0x1d8 kernel_init_freeable+0x128/0x180 kernel_init+0x2c/0x160 ret_from_fork+0x10/0x20-> #1 (reservation_ww_class_mutex){+.+.}-{4:4}: __lock_acquire+0x4d0/0xad0 lock_acquire.part.0+0xc4/0x248 lock_acquire+0x8c/0x248 dma_resv_lockdep+0x1a8/0x348 do_one_initcall+0x84/0x5d0 do_initcalls+0x194/0x1d8 kernel_init_freeable+0x128/0x180 kernel_init+0x2c/0x160 ret_from_fork+0x10/0x20-> #0 (reservation_ww_class_acquire){+.+.}-{0:0}: check_prev_add+0x114/0x790 validate_chain+0x594/0x6f0 __lock_acquire+0x4d0/0xad0 lock_acquire.part.0+0xc4/0x248 lock_acquire+0x8c/0x248 drm_gem_lru_scan+0x1ac/0x440 msm_gem_shrinker_scan+0x17c/0x400 [msm] do_shrink_slab+0x150/0x4a0 shrink_slab+0x144/0x460 shrink_one+0x9c/0x1b0 shrink_many+0x27c/0x5c0 shrink_node+0x344/0x550 balance_pgdat+0x2c0/0x988 kswapd+0x11c/0x318 kthread+0x10c/0x128 ret_from_fork+0x10/0x20デバッグに役立つその他の情報:チェーンは以下の通りです:reservation_ww_class_acquire --> reservation_ww_class_mutex --> fs_reclaim安全でないロック取得の可能性:CPU0 CPU1---- ----lock(fs_reclaim); lock(reservation_ww_class_mutex); lock(fs_reclaim);lock(reservation_ww_class_acquire);*** デッドロック ***kswapd0/82が保持しているロック:#0: ffffc31709b263b8 (fs_reclaim){+.+.}-{0:0}, 場所: balance_pgdat+0x88/0x988スタックトレース:CPU: 4 UID: 0 PID: 82 Comm: kswapd0 Tainted: G W7.0.0-debug+ #43 PREEMPT(full)ハードウェア名: LENOVO 21BX0016US/21BX0016US, BIOS N3HET94W (1.66 ) 2025/09/15kswapd0はfs_reclaimを保持しながらMSM shrinkerを呼び出し、さらにdma_resv_lockを呼び出します。その結果、fs_reclaimロックを再取得しようとしてデッドロックが発生します。このデッドロックは、dma_resv_lockの代わりにdma_resv_trylock()を使用し、以降不要となる待機付きのロックチケットを廃棄することで修正されました。パッチは以下で公開されています:https://patchwork.freedesktop.org/patch/723564/
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 5.5 (警告) [NVD値]
  • 攻撃元区分: ローカル
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 低
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): なし
  • 完全性への影響(I): なし
  • 可用性への影響(A): 高
影響を受けるシステム


Linux
  • Linux Kernel 6.17 以上 6.18.34 未満
  • Linux Kernel 6.19 以上 7.0.11 未満
  • Linux Kernel 7.1

想定される影響

・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。
・当該ソフトウェアが扱う情報について、書き換えは発生しません。
・当該ソフトウェアが完全に停止する可能性があります。
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。
ベンダ情報

CWEによる脆弱性タイプ一覧  CWEとは?

  1. 不適切なロック(CWE-667) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-64100
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-64100
  2. 関連文書 : drm/msm: Fix shrinker deadlock - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/928788566c79046f71a211fc32c115400be76402)
  3. 関連文書 : drm/msm: Fix shrinker deadlock - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/942968260e61d4a5d7552b20814b6277f9c553df)
  4. 関連文書 : https://git.kernel.org/stable/c/3392291fc509d8ad6e4ad90f15b0a193f721cbc9
更新履歴

  • [2026年08月12日]
      掲載