CVE-2026-90081 in Linux情報

要約

〜によって VulDB • 2026年09月18日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

net/rds: rds_cong_map_updated() で wq_has_sleeper() を使用する

rds_cong_map_updated() は、ピアの輻輳マップが書き換えられた後(rds_tcp_cong_recv() および rds_ib_cong_recv() によって、またはループバックおよび IB の送信完了パスにおけるクリアオール処理により)実行されます。この関数は rds_cong_generation をインクリメントし、その後 map->m_waitq と rds_poll_waitq に対して waitqueue_active() をチェックして、ウェイクアップを必要とするプロセスがいるかどうかを判断します。atomic_inc() は順序付けを保証せず、waitqueue_active() も単純なロード操作であるため、マップと generation のストアが待機キューのリードの前に順序づけされません。待機側も逆の動作を行います:rds_cong_wait() は m_waitq に自身を追加し、その後ポートビットをテストします。また rds_poll() は rds_poll_waitq に登録してから generation を読み取ります。これは include/linux/wait.h の waitqueue_active() で説明されているストアバッファリングパターンです。これにより、更新側は空の待機キューを観測する一方で、待機側はまだポートが輻輳している状態を認識しており、ウェイクアップが発行されません。

rds_cong_wait() はタイムアウトなしのインターラプティブルスリープであるため、輻輳したポートでブロックされた送信者は、そのピアからの次の輻輳更新通知が届くか、シグナルが配信されるまでブロック状態が続きます。poll() の待機側も同様にマップ更新通知を見逃します。

rds_tcp_state_change() が同じパターンに対して既に実行しているように、必要なフルバリアを伴う wq_has_sleeper() を使用してください。

If you want to get best quality of vulnerability data, you may have to visit VulDB.

責任者

Linux

予約する

2026年09月11日

モデレーション

承諾済み

エントリ

VDB-406568

EPSS

0.00211

アクティビティ

非常低い

ソース

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!