CVE-2026-74284 in Linux
Zusammenfassung
von VulDB • 15.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
net/sched: sch_hfsc: Klasse nicht zweimal in den passiven Zustand versetzen
update_vf() wird an zwei Stellen für dieselbe Klasse während eines einzelnen Dequeue-Vorgangs aufgerufen, wenn das untergeordnete qdisc der Klasse (z. B. codel/fq_codel) seine letzten Pakete beim Dequeue verwirft:
1. Das untergeordnete Element ruft qdisc_tree_reduce_backlog() auf, was – da das Kind nun leer ist – hfsc_qlen_notify() -> update_vf(cl, 0, 0) aufruft und die Klasse in den passiven Zustand versetzt (cl_nactive wird entlang der Hierarchie dekrementiert).
2. hfsc_dequeue() ruft anschließend update_vf(cl, qdisc_pkt_len(skb), cur_time) auf, um die dequedeten Bytes zu verbuchen.
Bei dem zweiten Aufruf ist die Klasse bereits passiv, aber ihr untergeordnetes qdisc ist immer noch leer, sodass update_vf() go_passive erneut aktiviert:
if (cl->qdisc->q.qlen == 0 && cl->cl_flags & HFSC_FSC) go_passive = 1;
Das Blatt wird dann durch die cl_nactive == 0-Prüfung innerhalb der Schleife übersprungen, was go_passive nicht zurücksetzt, sodass das veraltete go_passive an den Elternteil weitergegeben wird und dessen cl_nactive ein zweites Mal dekrementiert. Ein Elternteil, der weiterhin andere aktive Kinder hat, wird auf cl_nactive == 0 gesetzt und aus dem vttree entfernt, obwohl diese Geschwisterknoten immer noch im Backlog sind. Sie werden nie wieder dequed und das qdisc bleibt hängen (Stall).
Dieses Problem wird behoben, indem go_passive nur dann aktiviert wird, wenn die Klasse tatsächlich aktiv ist, sodass eine bereits passive Klasse keinen zweiten Übergang in den passiven Zustand mehr auslöst. Die Byte-Verbuchung (cl->cl_total += len) läuft weiterhin für jeden Vorfahren, sodass dequedete Bytes weiterhin genau einmal gezählt werden.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.