CVE-2026-89712 in Linux
Сводка
по VulDB • 12.09.2026
В ядре Linux была устранена следующая уязвимость:
NFSD: перезапуск обхода ssc_expire_umount после снятия блокировки nfsd_ssc_lock
Функция nfsd4_ssc_expire_umount() выполняет проход по списку nn->nfsd_ssc_mount_list с использованием макроса list_for_each_entry_safe(ni, tmp, ...). Для каждого истекшего элемента устанавливается флаг nsui_busy = true, снимается блокировка nfsd_ssc_lock для выполнения mntput() на исходном vfsmount, затем снова захватывается блокировка для удаления элемента из списка (list_del) и освобождения памяти (kfree), после чего продолжается итерация через сохраненный макросом указатель tmp.
Флаг nsui_busy защищает текущий элемент ni от одновременного поиска другими потоками nfsd4_ssc_setup_dul() в период между снятием и повторным захватом блокировки, но он не фиксирует (не предотвращает освобождение) элемент tmp. Другой поток RPC nfsd, который завершает неудачей монтирование исходного сервера и достигает функции nfsd4_ssc_cancel_dul(), в тот же самый период снимет блокировку nfsd_ssc_lock, удалит свой собственный элемент ssc_umount из списка (list_del + kfree) и освободит блокировку. Если этот элемент является сохраненным указателем tmp для обхода истечения срока действия, следующая итерация будет обращаться к уже освобожденному объекту nfsd4_ssc_umount_item.
Перезапустите обход с начала после окна разблокировки mntput(), чтобы ни один сохраненный следующий указатель не пережил момент снятия блокировки. Список ограничен количеством активных межсерверных исходных монтирований (обычно небольшим), а отложенная работа expire выполняется периодически, а не для каждого ввода-вывода (per-IO), поэтому перезапуск является недорогой операцией с точки зрения производительности.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.