CVE-2026-74284
net/sched: sch_hfsc: Don't make class passive twice
Description
In the Linux kernel, the following vulnerability has been resolved: net/sched: sch_hfsc: Don't make class passive twice update_vf() is called from two places for the same class during a single dequeue when the class's child qdisc (e.g. codel/fq_codel) drops its last packets while dequeuing: 1. The child calls qdisc_tree_reduce_backlog(), which, now that the child is empty, invokes hfsc_qlen_notify() -> update_vf(cl, 0, 0) and turns the class passive (cl_nactive is decremented up the hierarchy). 2. hfsc_dequeue() then calls update_vf(cl, qdisc_pkt_len(skb), cur_time) to charge the dequeued bytes. On the second call the class is already passive, but its child qdisc is still empty, so update_vf() arms go_passive again: if (cl->qdisc->q.qlen == 0 && cl->cl_flags & HFSC_FSC) go_passive = 1; The leaf is then skipped by the cl_nactive == 0 check inside the loop, which does not clear go_passive, so the stale go_passive propagates to the parent and decrements its cl_nactive a second time. A parent that still has other active children is driven to cl_nactive == 0 and removed from the vttree, even though those siblings are still backlogged. They are never dequeued again and the qdisc stalls. Fix this by only arming go_passive when the class is actually active, so an already-passive class no longer triggers a second passive transition. The byte accounting (cl->cl_total += len) still runs for every ancestor, so dequeued bytes continue to be counted exactly once.
INFO
Published Date :
Aug. 15, 2026, 6:22 a.m.
Last Modified :
Aug. 17, 2026, 6:19 a.m.
Remotely Exploit :
No
Source :
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Solution
- Update the Linux kernel to the latest version.
- Apply the specific patch for sch_hfsc.
- Ensure hfsc_qlen_notify is called correctly.
- Verify class state before triggering passive transition.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-74284.
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-74284 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-74284
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-74284 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-74284 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
CVE Modified by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Aug. 17, 2026
Action Type Old Value New Value Changed Affected [{'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '72c61ffbeeb8c50f6d4d70c65d3283aa1bac57a7', 'lessThan': 'a425c82ff06cda5165e0de3de8c2a445ec1f863e', 'versionType': 'git'}, {'status': 'affected', 'version': 'a5efc95a33bd4fcb879250852828cc58c7862970', 'lessThan': 'fc973ecd1a079b9a87c360478542f3a56dea085b', 'versionType': 'git'}, {'status': 'affected', 'version': '0475c85426b18eccdcb7f9fb58d8f8e9c6c58c87', 'lessThan': '15720cd8fa3fc625146128f89a8e11b0449a20a7', 'versionType': 'git'}, {'status': 'affected', 'version': '9030a91235ae4845ec71902c3e0cecfc9ed1f2df', 'lessThan': 'b2a017bfcf565721918ec7355a373911d2f2a227', 'versionType': 'git'}, {'status': 'affected', 'version': 'd06476714d2819b550e0cc39222347e2c8941c9d', 'lessThan': '9221a594c72a1446137926d4c2aa04e345f798dc', 'versionType': 'git'}, {'status': 'affected', 'version': '51eb3b65544c9efd6a1026889ee5fb5aa62da3bb', 'lessThan': '66dbb13eeb2fc339f8f548a9076be4c1a94857b0', 'versionType': 'git'}, {'status': 'affected', 'version': '51eb3b65544c9efd6a1026889ee5fb5aa62da3bb', 'lessThan': '3a49bbae676fef1ffe548971e6229ae2adeb9d10', 'versionType': 'git'}, {'status': 'affected', 'version': '51eb3b65544c9efd6a1026889ee5fb5aa62da3bb', 'lessThan': '90b662ea25f5e83bb3b8ccec5b93ced810b92fb8', 'versionType': 'git'}, {'status': 'affected', 'version': '9a5fd5c2f4d4afdd5e405083ee53e0789ce76956', 'versionType': 'git'}, {'status': 'affected', 'version': 'c1175c4ad01dbc9c979d099861fa90a754f72059', 'versionType': 'git'}, {'status': 'affected', 'version': '5.10.241', 'lessThan': '5.10.261', 'versionType': 'semver'}, {'status': 'affected', 'version': '5.15.190', 'lessThan': '5.15.212', 'versionType': 'semver'}, {'status': 'affected', 'version': '6.1.138', 'lessThan': '6.1.178', 'versionType': 'semver'}, {'status': 'affected', 'version': '6.6.90', 'lessThan': '6.6.145', 'versionType': 'semver'}, {'status': 'affected', 'version': '6.12.28', 'lessThan': '6.12.97', 'versionType': 'semver'}, {'status': 'affected', 'version': '5.4.297', 'lessThan': '5.5', 'versionType': 'semver'}, {'status': 'affected', 'version': '6.14.6', 'lessThan': '6.15', 'versionType': 'semver'}], 'programFiles': ['net/sched/sch_hfsc.c'], 'defaultStatus': 'unaffected'}, {'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '6.15'}, {'status': 'unaffected', 'version': '0', 'lessThan': '6.15', 'versionType': 'semver'}, {'status': 'unaffected', 'version': '5.10.261', 'versionType': 'semver', 'lessThanOrEqual': '5.10.*'}, {'status': 'unaffected', 'version': '5.15.212', 'versionType': 'semver', 'lessThanOrEqual': '5.15.*'}, {'status': 'unaffected', 'version': '6.1.178', 'versionType': 'semver', 'lessThanOrEqual': '6.1.*'}, {'status': 'unaffected', 'version': '6.6.145', 'versionType': 'semver', 'lessThanOrEqual': '6.6.*'}, {'status': 'unaffected', 'version': '6.12.97', 'versionType': 'semver', 'lessThanOrEqual': '6.12.*'}, {'status': 'unaffected', 'version': '6.18.40', 'versionType': 'semver', 'lessThanOrEqual': '6.18.*'}, {'status': 'unaffected', 'version': '7.1.5', 'versionType': 'semver', 'lessThanOrEqual': '7.1.*'}, {'status': 'unaffected', 'version': '7.2-rc1', 'versionType': 'original_commit_for_fix', 'lessThanOrEqual': '*'}], 'programFiles': ['net/sched/sch_hfsc.c'], 'defaultStatus': 'affected'}] [{'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '72c61ffbeeb8c50f6d4d70c65d3283aa1bac57a7', 'lessThan': 'a425c82ff06cda5165e0de3de8c2a445ec1f863e', 'versionType': 'git'}, {'status': 'affected', 'version': 'a5efc95a33bd4fcb879250852828cc58c7862970', 'lessThan': 'fc973ecd1a079b9a87c360478542f3a56dea085b', 'versionType': 'git'}, {'status': 'affected', 'version': '0475c85426b18eccdcb7f9fb58d8f8e9c6c58c87', 'lessThan': '15720cd8fa3fc625146128f89a8e11b0449a20a7', 'versionType': 'git'}, {'status': 'affected', 'version': '9030a91235ae4845ec71902c3e0cecfc9ed1f2df', 'lessThan': 'b2a017bfcf565721918ec7355a373911d2f2a227', 'versionType': 'git'}, {'status': 'affected', 'version': 'd06476714d2819b550e0cc39222347e2c8941c9d', 'lessThan': '9221a594c72a1446137926d4c2aa04e345f798dc', 'versionType': 'git'}, {'status': 'affected', 'version': '51eb3b65544c9efd6a1026889ee5fb5aa62da3bb', 'lessThan': '66dbb13eeb2fc339f8f548a9076be4c1a94857b0', 'versionType': 'git'}, {'status': 'affected', 'version': '51eb3b65544c9efd6a1026889ee5fb5aa62da3bb', 'lessThan': '3a49bbae676fef1ffe548971e6229ae2adeb9d10', 'versionType': 'git'}, {'status': 'affected', 'version': '51eb3b65544c9efd6a1026889ee5fb5aa62da3bb', 'lessThan': '90b662ea25f5e83bb3b8ccec5b93ced810b92fb8', 'versionType': 'git'}, {'status': 'affected', 'version': '9a5fd5c2f4d4afdd5e405083ee53e0789ce76956', 'versionType': 'git'}, {'status': 'affected', 'version': 'c1175c4ad01dbc9c979d099861fa90a754f72059', 'versionType': 'git'}, {'status': 'affected', 'version': '5.10.241', 'lessThan': '5.10.261', 'versionType': 'semver'}, {'status': 'affected', 'version': '5.15.190', 'lessThan': '5.15.212', 'versionType': 'semver'}, {'status': 'affected', 'version': '6.1.138', 'lessThan': '6.1.178', 'versionType': 'semver'}, {'status': 'affected', 'version': '6.6.90', 'lessThan': '6.6.145', 'versionType': 'semver'}, {'status': 'affected', 'version': '6.12.28', 'lessThan': '6.12.97', 'versionType': 'semver'}, {'status': 'affected', 'version': '5.4.297', 'lessThan': '5.5', 'versionType': 'semver'}, {'status': 'affected', 'version': '6.14.6', 'lessThan': '6.15', 'versionType': 'semver'}], 'programFiles': ['net/sched/sch_hfsc.c'], 'defaultStatus': 'unaffected'}, {'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '6.15'}, {'status': 'unaffected', 'version': '0', 'lessThan': '6.15', 'versionType': 'semver'}, {'status': 'unaffected', 'version': '5.10.261', 'versionType': 'semver', 'lessThanOrEqual': '5.10.*'}, {'status': 'unaffected', 'version': '5.15.212', 'versionType': 'semver', 'lessThanOrEqual': '5.15.*'}, {'status': 'unaffected', 'version': '6.1.178', 'versionType': 'semver', 'lessThanOrEqual': '6.1.*'}, {'status': 'unaffected', 'version': '6.6.145', 'versionType': 'semver', 'lessThanOrEqual': '6.6.*'}, {'status': 'unaffected', 'version': '6.12.97', 'versionType': 'semver', 'lessThanOrEqual': '6.12.*'}, {'status': 'unaffected', 'version': '6.18.40', 'versionType': 'semver', 'lessThanOrEqual': '6.18.*'}, {'status': 'unaffected', 'version': '7.1.5', 'versionType': 'semver', 'lessThanOrEqual': '7.1.*'}, {'status': 'unaffected', 'version': '7.2', 'versionType': 'original_commit_for_fix', 'lessThanOrEqual': '*'}], 'programFiles': ['net/sched/sch_hfsc.c'], 'defaultStatus': 'affected'}] -
New CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Aug. 15, 2026
Action Type Old Value New Value Added Affected [{'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '72c61ffbeeb8c50f6d4d70c65d3283aa1bac57a7', 'lessThan': 'a425c82ff06cda5165e0de3de8c2a445ec1f863e', 'versionType': 'git'}, {'status': 'affected', 'version': 'a5efc95a33bd4fcb879250852828cc58c7862970', 'lessThan': 'fc973ecd1a079b9a87c360478542f3a56dea085b', 'versionType': 'git'}, {'status': 'affected', 'version': '0475c85426b18eccdcb7f9fb58d8f8e9c6c58c87', 'lessThan': '15720cd8fa3fc625146128f89a8e11b0449a20a7', 'versionType': 'git'}, {'status': 'affected', 'version': '9030a91235ae4845ec71902c3e0cecfc9ed1f2df', 'lessThan': 'b2a017bfcf565721918ec7355a373911d2f2a227', 'versionType': 'git'}, {'status': 'affected', 'version': 'd06476714d2819b550e0cc39222347e2c8941c9d', 'lessThan': '9221a594c72a1446137926d4c2aa04e345f798dc', 'versionType': 'git'}, {'status': 'affected', 'version': '51eb3b65544c9efd6a1026889ee5fb5aa62da3bb', 'lessThan': '66dbb13eeb2fc339f8f548a9076be4c1a94857b0', 'versionType': 'git'}, {'status': 'affected', 'version': '51eb3b65544c9efd6a1026889ee5fb5aa62da3bb', 'lessThan': '3a49bbae676fef1ffe548971e6229ae2adeb9d10', 'versionType': 'git'}, {'status': 'affected', 'version': '51eb3b65544c9efd6a1026889ee5fb5aa62da3bb', 'lessThan': '90b662ea25f5e83bb3b8ccec5b93ced810b92fb8', 'versionType': 'git'}, {'status': 'affected', 'version': '9a5fd5c2f4d4afdd5e405083ee53e0789ce76956', 'versionType': 'git'}, {'status': 'affected', 'version': 'c1175c4ad01dbc9c979d099861fa90a754f72059', 'versionType': 'git'}, {'status': 'affected', 'version': '5.10.241', 'lessThan': '5.10.261', 'versionType': 'semver'}, {'status': 'affected', 'version': '5.15.190', 'lessThan': '5.15.212', 'versionType': 'semver'}, {'status': 'affected', 'version': '6.1.138', 'lessThan': '6.1.178', 'versionType': 'semver'}, {'status': 'affected', 'version': '6.6.90', 'lessThan': '6.6.145', 'versionType': 'semver'}, {'status': 'affected', 'version': '6.12.28', 'lessThan': '6.12.97', 'versionType': 'semver'}, {'status': 'affected', 'version': '5.4.297', 'lessThan': '5.5', 'versionType': 'semver'}, {'status': 'affected', 'version': '6.14.6', 'lessThan': '6.15', 'versionType': 'semver'}], 'programFiles': ['net/sched/sch_hfsc.c'], 'defaultStatus': 'unaffected'}, {'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '6.15'}, {'status': 'unaffected', 'version': '0', 'lessThan': '6.15', 'versionType': 'semver'}, {'status': 'unaffected', 'version': '5.10.261', 'versionType': 'semver', 'lessThanOrEqual': '5.10.*'}, {'status': 'unaffected', 'version': '5.15.212', 'versionType': 'semver', 'lessThanOrEqual': '5.15.*'}, {'status': 'unaffected', 'version': '6.1.178', 'versionType': 'semver', 'lessThanOrEqual': '6.1.*'}, {'status': 'unaffected', 'version': '6.6.145', 'versionType': 'semver', 'lessThanOrEqual': '6.6.*'}, {'status': 'unaffected', 'version': '6.12.97', 'versionType': 'semver', 'lessThanOrEqual': '6.12.*'}, {'status': 'unaffected', 'version': '6.18.40', 'versionType': 'semver', 'lessThanOrEqual': '6.18.*'}, {'status': 'unaffected', 'version': '7.1.5', 'versionType': 'semver', 'lessThanOrEqual': '7.1.*'}, {'status': 'unaffected', 'version': '7.2-rc1', 'versionType': 'original_commit_for_fix', 'lessThanOrEqual': '*'}], 'programFiles': ['net/sched/sch_hfsc.c'], 'defaultStatus': 'affected'}] Added Description In the Linux kernel, the following vulnerability has been resolved: net/sched: sch_hfsc: Don't make class passive twice update_vf() is called from two places for the same class during a single dequeue when the class's child qdisc (e.g. codel/fq_codel) drops its last packets while dequeuing: 1. The child calls qdisc_tree_reduce_backlog(), which, now that the child is empty, invokes hfsc_qlen_notify() -> update_vf(cl, 0, 0) and turns the class passive (cl_nactive is decremented up the hierarchy). 2. hfsc_dequeue() then calls update_vf(cl, qdisc_pkt_len(skb), cur_time) to charge the dequeued bytes. On the second call the class is already passive, but its child qdisc is still empty, so update_vf() arms go_passive again: if (cl->qdisc->q.qlen == 0 && cl->cl_flags & HFSC_FSC) go_passive = 1; The leaf is then skipped by the cl_nactive == 0 check inside the loop, which does not clear go_passive, so the stale go_passive propagates to the parent and decrements its cl_nactive a second time. A parent that still has other active children is driven to cl_nactive == 0 and removed from the vttree, even though those siblings are still backlogged. They are never dequeued again and the qdisc stalls. Fix this by only arming go_passive when the class is actually active, so an already-passive class no longer triggers a second passive transition. The byte accounting (cl->cl_total += len) still runs for every ancestor, so dequeued bytes continue to be counted exactly once. Added Reference https://git.kernel.org/stable/c/15720cd8fa3fc625146128f89a8e11b0449a20a7 Added Reference https://git.kernel.org/stable/c/3a49bbae676fef1ffe548971e6229ae2adeb9d10 Added Reference https://git.kernel.org/stable/c/66dbb13eeb2fc339f8f548a9076be4c1a94857b0 Added Reference https://git.kernel.org/stable/c/90b662ea25f5e83bb3b8ccec5b93ced810b92fb8 Added Reference https://git.kernel.org/stable/c/9221a594c72a1446137926d4c2aa04e345f798dc Added Reference https://git.kernel.org/stable/c/a425c82ff06cda5165e0de3de8c2a445ec1f863e Added Reference https://git.kernel.org/stable/c/b2a017bfcf565721918ec7355a373911d2f2a227 Added Reference https://git.kernel.org/stable/c/fc973ecd1a079b9a87c360478542f3a56dea085b