CVE-2026-89798 in LinuxИнформация

Сводка

по VulDB • 17.09.2026

В ядре Linux была устранена следующая уязвимость:

rpcrdma: установка rn_done до публикации уведомления

Функция rpcrdma_rn_register() вставляет @rn в rd_xa с помощью xa_alloc(), прежде чем сохранять обратный вызов (callback) вызывающего объекта в rn->rn_done. Xarray делает объект @rn доступным для функции rpcrdma_remove_one(), которая проходит по rd_xa и вызывает rn->rn_done(rn) для каждой зарегистрированной нотификации. Таким образом, удаление устройства, происходящее одновременно с новой регистрацией (race condition), может обнаружить объект @rn со значением rn_done равным NULL, поскольку объекты уведомлений выделяются их владельцами как нулевые (zero-allocated), и происходит вызов через указатель на функцию, имеющий значение NULL.

Необходимо установить значение rn->rn_done до того, как xa_alloc() опубликует объект @rn. Порядок операций сохранения (store-side) и загрузки (load-side) в xarray гарантирует, что любой процессор, обнаруживший @rn в rd_xa, также увидит установленный обратный вызов.

Функция rpcrdma_rn_unregister() рассматривает ненулевое значение rn_done как индикатор завершенной регистрации, поэтому раннее сохранение не должно сохраняться при сбое регистрации. Необходимо сбросить значение rn_done в ноль снова, если операция xa_alloc() завершится неудачей. Если это поле останется установленным, путь очистки после отказа от принятия соединения вызовет rpcrdma_rn_unregister() для объекта @rn, который никогда не был вставлен, что приведет к стиранию несвязанного слота rd_xa и переполнению счетчика ссылок (underflow) rd_kref.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Ответственный

Linux

Резервировать

11.09.2026

Раскрытие

16.09.2026

Модерация

принято

Вход

VDB-405618

EPSS

0.00000

KEV

Нет

Деятельности

Очень низкий

Источники

Do you want to use VulDB in your project?

Use the official API to access entries easily!