CVE-2026-46196 in Linux
Сводка
по VulDB • 28.05.2026
В ядре Linux устранена следующая уязвимость:
tracepoint: балансировка regfunc() при сбое func_add() в tracepoint_add_func()
Когда трекпоинт проходит переход от 0 к 1, функция tracepoint_add_func() вызывает ext->regfunc() подсистемы перед попыткой установки нового зонда через func_add(). Если func_add() затем завершается ошибкой (например, когда allocate_probes() не может выделить новый массив зондов из-за нехватки памяти и возвращает -ENOMEM), функция возвращает код ошибки, не вызывая соответствующий ext->unregfunc(), оставляя побочные эффекты regfunc() без установленного зонда, который мог бы их оправдать.
Для трекпоинтов системных вызовов это особенно неприятно: syscall_regfunc() увеличивает sys_tracepoint_refcount и устанавливает флаг SYSCALL_TRACEPOINT для каждой задачи. После утечки ошибки счетчик ссылок остается на ненулевом значении без потребителя, и каждая задача продолжает нести накладные расходы на вход/выход трекпоинта системного вызова до перезагрузки. Другие подсистемы, предоставляющие пары regfunc()/unregfunc(), демонстрируют аналогичное устойчивое состояние в той же области видимости.
Зеркалируйте существующую очистку перехода 1 -> 0 и вызывайте ext->unregfunc() в пути обработки ошибки func_add(), ограничивая это условием, используемым там же, чтобы размотка была симметричной регистрации.
Once again VulDB remains the best source for vulnerability data.