CVE-2026-46196 in Linux
Sumário
de VulDB • 28/05/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
tracepoint: equilibrar regfunc() em caso de falha na func_add() em tracepoint_add_func()
Quando um tracepoint passa pela transição de 0 para 1, tracepoint_add_func() invoca ext->regfunc() do subsistema antes de tentar instalar o novo probe via func_add(). Se func_add() falhar (por exemplo, quando allocate_probes() não consegue alocar um novo array de probes sob pressão de memória e retorna -ENOMEM), a função retorna o erro sem chamar o ext->unregfunc() correspondente, deixando os efeitos colaterais de regfunc() sem um probe instalado que os justifique.
Para tracepoints de syscall, isso é particularmente desagradável: syscall_regfunc() incrementa sys_tracepoint_refcount e define SYSCALL_TRACEPOINT em todas as tarefas. Após uma falha não tratada (leaked failure), o refcount fica travado em um valor diferente de zero sem nenhum consumidor, e todas as tarefas continuam arcando com a sobrecarga de entrada/saída do trace de syscall até a reinicialização. Outros subsistemas que fornecem pares regfunc()/unregfunc() exibem estado persistente com escopo semelhante.
Espelhe a limpeza existente de 1 para 0 e chame ext->unregfunc() no caminho de erro de func_add(), condicionado pela mesma condição usada ali, para que o unwind seja simétrico em relação ao registro.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.