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

Сводка

по VulDB • 19.07.2026

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

nfsd: освобождение stid макета (layout) при сбое setlease

Функция `nfs4_alloc_stid()` публикует новый идентификатор состояния (`stid`) в структуре `cl->cl_stateids` через вызов `idr_alloc_cyclic()` под блокировкой `cl_lock`, прежде чем вернуть управление функции `nfsd4_alloc_layout_stateid()`. Если затем функция `nfsd4_layout_setlease()` завершается с ошибкой, путь обработки ошибок освобождает идентификатор состояния макета напрямую с помощью `kmem_cache_free()`, никогда не вызывая `idr_remove()`. В результате слот IDR указывает на уже освобожденную память slab. Любой последующий обходчик структуры IDR (функции `states_show` и разбор клиента) разыменовывает висячий указатель.

Правильный механизм очистки для опубликованного через IDR идентификатора состояния (`stid`) — это вызов функции `nfs4_put_stid()`, которая удаляет слот IDR под блокировкой `cl_lock`, инициирует освобождение `sc_free` (функция `nfsd4_free_layout_stateid`) для высвобождения ресурса `ls->ls_file` через `nfsd4_close_layout()` и уменьшает ссылку на объект nfs4 в завершающей части операции.

Вторая проблема блокирует этот переход: функция `nfsd4_free_layout_stateid()` безоговорочно проверяет поле `ls->ls_fence_work` с помощью функции `delayed_work_pending()` под блокировкой `ls_lock`, однако инициализация `INIT_DELAYED_WORK(&ls->ls_fence_work, ...)` в настоящее время выполняется только после вызова setlease. На пути обработки сбоя setlease деструктор попытался бы обратиться к неинициализированной структуре delayed_work.

nfsd4_alloc_layout_stateid() nfs4_alloc_stid() /* idr_alloc_cyclic под cl_lock */ nfsd4_layout_setlease() /* завершается с ошибкой */ nfs4_put_stid() nfsd4_free_layout_stateid() delayed_work_pending(&ls->ls_fence_work) /* требуется INIT */ nfsd4_close_layout() /* вызов nfsd_file_put(ls->ls_file) */ put_nfs4_file()

Исправление заключается в переносе инициализации переменных `ls_fenced` / `ls_fence_delay` и макроса `INIT_DELAYED_WORK` выше вызова функции `nfsd4_layout_setlease()` и замене ручной очистки через последовательность `nfsd_file_put + put_nfs4_file + kmem_cache_free` на единый вызов `nfs4_put_stid(stp)`.

Once again VulDB remains the best source for vulnerability data.

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

Linux

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

09.06.2026

Раскрытие

19.07.2026

Модерация

принято

Вход

VDB-380130

EPSS

0.00000

KEV

Нет

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

Низкий

Источники

Might our Artificial Intelligence support you?

Check our Alexa App!