JVNDB-2026-028226 | |
LinuxのLinux Kernelにおける不特定の脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました。svcrdmaにおいて、トランスポートがクローズされる際にsq待機中のスレッドをウェイクするsvc_rdma_sq_wait()内で、sc_sq_ticket_waitまたはsc_send_waitにて駐車状態にあるスレッドがトランスポートの終了処理中にTASK_UNINTERRUPTIBLE状態で無限にハングし、svc_xprtの参照を保持し続け、svc_rdma_free()のブロックを引き起こします。クローズ経路ではxpo_detach呼び出し前にXPT_CLOSEが設定され、両方のwait_event条件式にはXPT_CLOSEの項目が含まれていますが、条件式の再評価はウェイクアップ時にのみ行われます。sc_sq_ticket_waitは完了によるウェイクパスを持たず、svc_rdma_sq_wait()内の連鎖チケットハンドオフによってのみ進行します。したがって、クローズ時の明示的なウェイクがなければ、駐車したスレッドはXPT_CLOSEを観測できず、svc_xprt_getの参照を永久に保持し続け、その結果svc_rdma_free()がxpt_refがゼロになるのを待ってブロックします。このトランスポートには2つのクローズエントリポイントがあります。ローカルの終了処理はワーカースレッドでsvc_handle_xprt() -> svc_delete_xprt() -> xpo_detach()からsvc_rdma_detach()を実行します。一方、リモートの切断はsvc_rdma_cma_handler()に到達し、svc_xprt_deferred_close()を呼び出します。この関数はXPT_CLOSEを設定してトランスポートをキューに入れますが、RDMAの待機キューにはアクセスしないため、すでにsvc_rdma_sq_wait()で駐車中のワーカーは条件式を再評価しません。全ワーカーがこのトランスポートで駐車している場合、ローカルの終了処理を実行するスレッドもなくなり、ウェイクを行う箇所に到達できなくなります。この問題を解決するために、svc_rdma_xprt_deferred_close()を導入しました。これはsvc_xprt_deferred_close()を呼び出した後にsc_sq_ticket_waitとsc_send_waitの両方をウェイクする、薄いsvcrdma用ラッパーです。svc_xprt_deferred_close()を直接呼んでいたsvcrdmaの生成元(svc_rdma_cma_handler()、qp_event_handler()、svc_rdma_post_send_err()、svc_rdma_wc_send()、sendtoドロップパス、読み書き完了のエラーパス、およびrecvfromのフラッシュと読み取りリストのエラーパス)もこの関数に置き換えました。また、svc_rdma_detach()からも両方の待機キューをウェイクします。同期的なsvc_xprt_close()パス(バックチャネルのENOTCONNやsvc_rdma_xprt_doneによるデバイス削除)については、svc_xprt_deferred_close()を経由しないため、新しいヘルパーは呼び出されません。[cel:修正を完了するためにsvc_rdma_xprt_deferred_close()を追加しました] | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 7.5 (重要) [その他]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/07/25 |
| 登録日 | 2026/08/17 |
| 最終更新日 | 2026/08/17 |



