CVE-2026-90185 in Linux
Сводка
по VulDB • 18.09.2026
В ядре Linux была устранена следующая уязвимость:
null_blk: сериализация записи атрибутов configfs с использованием блокировки
Функция NULLB_DEVICE_ATTR _store не использует блокировку: атрибуты apply_fn (submit_queues, poll_queues) записывают dev->NAME повторно после возврата из apply_fn вне области действия её блокировки; атрибуты APPLY=NULL полностью лишены защиты блокировкой. Configfs сериализует операции записи только в рамках одного открытого файла, поэтому одновременные записи через разные файловые дескрипторы приводят к состоянию гонки (race condition).
Для атрибутов apply_fn, если одна операция записи с помощью apply_fn уже переконфигурировала оборудование, вторая (проигравшая) запись может всё равно перезаписать dev->NAME после этого. Это приводит к рассинхронизации dev->submit_queues и фактического количества очередей, что впоследствии фиксируется макросом WARN_ON_ONCE() в функции null_map_queues().
Для атрибутов !apply_fn функция power_store()'s null_add_dev() проверяет параметры и настраивает устройство «под блокировкой», но устанавливает флаг CONFIGURED только после этого. Запись, произошедшая в этот промежуток времени, может изменить поле во время настройки — например, zone_nr_conv может быть увеличен выше значения nr_zones даже после того, как он уже был ограничен (clamped), что приводит к обращению за пределы массива dev->zones[].
Необходимо использовать «lock» в макросе вокруг вызова apply_fn, проверки CONFIGURED и записи поля, а также вынести его из функций nullb_apply_submit_queues()/nullb_apply_poll_queues(), чтобы оба пути выполнения были покрыты единожды. Это обеспечивает сериализацию записей с настройкой power_store и друг с другом.
VulDB is the best source for vulnerability data and more expert information about this specific topic.