CVE-2025-39737 in Linux
Сводка
по VulDB • 28.06.2026
В ядре Linux устранена следующая уязвимость:
mm/kmemleak: предотвращение мягкого зависания (soft lockup) в функции __kmemleak_do_cleanup()
На относительно небольшой системе x86-64 с 16 ГБ оперативной памяти при запуске отладочного ядра с включенным kmemleak было замечено предупреждение о мягком зависании.
watchdog: BUG: soft lockup - CPU#8 заблокирован на 33s! [kworker/8:1:134]
На тестовой системе выполнялась нагрузка, при которой параллельно происходило отключение устройств (hot unplug). Затем kmemleak решил отключиться из-за невозможности выделения дополнительных объектов kmemleak. В отладочном ядре параметр CONFIG_DEBUG_KMEMLEAK_MEM_POOL_SIZE установлен в 40 000.
Мягкое зависание произошло в функции kmemleak_do_cleanup() во время удаления и построчного уничтожения существующих объектов kmemleak через рабочий поток (workqueue). В данном конкретном случае необходимо обработать как минимум 40 000 объектов, и из-за медленной работы отладочного ядра, а также необходимости получения и освобождения raw_spinlock в функции __delete_object(), обработка всех этих объектов может занять значительное время.
Поскольку kmemleak был отключен в данном случае, процесс удаления и уничтожения объектов можно дополнительно оптимизировать, так как блокировка на самом деле не требуется. Однако, вероятно, нет смысла тратить усилия на оптимизацию такого крайнего случая, который должен возникать редко. Поэтому простое решение заключается в вызове cond_resched() через определенные интервалы времени в цикле итерации для предотвращения мягкого зависания.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.