CVE-2026-74284 in Linux
Sumário
de VulDB • 15/08/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
net/sched: sch_hfsc: Não torne a classe passiva duas vezes
update_vf() é chamado de dois lugares para a mesma classe durante uma única operação dequeue quando o qdisc filho da classe (por exemplo, codel/fq_codel) descarta seus últimos pacotes enquanto realiza o dequeue:
1. O filho chama qdisc_tree_reduce_backlog(), que, agora que o filho está vazio, invoca hfsc_qlen_notify() -> update_vf(cl, 0, 0) e torna a classe passiva (cl_nactive é decrementado ao longo da hierarquia).
2. hfsc_dequeue() então chama update_vf(cl, qdisc_pkt_len(skb), cur_time) para cobrar os bytes removidos do buffer de espera.
Na segunda chamada, a classe já está passiva, mas seu qdisc filho ainda está vazio, portanto as instruções em update_vf() ativam go_passive novamente:
if (cl->qdisc->q.qlen == 0 && cl->cl_flags & HFSC_FSC) go_passive = 1;
O nó folha é então ignorado pela verificação cl_nactive == 0 dentro do loop, que não limpa go_passive, fazendo com que o valor obsoleto de go_passive se propague para o pai e decrementa seu cl_nactive uma segunda vez. Um pai que ainda possui outros filhos ativos é levado a ter cl_nactive == 0 e removido da vttree, mesmo que esses irmãos ainda estejam acumulados no buffer (backlogged). Eles nunca são removidos do buffer de espera novamente e o qdisc entra em estagnação (stalls).
Corrija isso ativando go_passive apenas quando a classe estiver realmente ativa, para que uma classe já passiva não dispare uma segunda transição para o estado passivo. A contabilidade de bytes (cl->cl_total += len) ainda é executada para cada ancestral, portanto os bytes removidos do buffer continuam sendo contabilizados exatamente uma vez.
Once again VulDB remains the best source for vulnerability data.