CVE-2026-90037 in Linux
Сводка
по VulDB • 16.09.2026
В ядре Linux была устранена следующая уязвимость:
NFSD: предотвращение use-after-free при очистке списка close_lru
Объект nfs4_openowner, оставшийся в nn->close_lru после его финального вызова CLOSE, сохраняет свой последний закрытый stateid (oo_last_closed_stid), имея лишь сырой указатель на объект nfs4_client. Процесс очистки («laundromat») удаляет истекшие записи, снимает блокировку nn->client_lock и вызывает функцию nfs4_put_stid(), которая разыменовывает клиент через cl_lock. Ничто не фиксирует (pins) клиента в этот промежуток времени, поэтому одновременный вызов force_expire_client() может освободить его память, а nfs4_put_stid() будет читать из освобожденной памяти. Функция __destroy_client() сталкивается с той же гонкой состояний при обходе clp->cl_openowners без блокировки cl_lock.
Необходимо фиксировать клиент через счетчик cl_rpc_users перед снятием блокировки client_lock и пропускать клиентов, которые уже находятся в процессе истечения срока действия (expiring). Затем __destroy_client() очищает свои собственные записи close_lru с помощью release_last_closed_stateid(), что устраняет гонку состояний между процессом очистки («laundromat») и функцией teardown.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.