{"api_version":"1","generated_at":"2026-10-01T16:18:29+00:00","cve":"CVE-2026-90073","urls":{"html":"https://cve.report/CVE-2026-90073","api":"https://cve.report/api/cve/CVE-2026-90073.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-90073","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-90073"},"summary":{"title":"net/sched: hhf: clamp quantum before hhf_change() to avoid overflow","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/sched: hhf: clamp quantum before hhf_change() to avoid overflow\n\nhhf_init() sets q->quantum = psched_mtu(qdisc_dev(sch)) with no overflow\ncheck. A device with a huge MTU (e.g. dummy with max_mtu == 0 accepting\nMTU 2147483634) makes weight * quantum overflow the signed deficit in\nhhf_dequeue(), spinning forever.\n\nClamp q->quantum before hhf_change() so both the opt and !opt paths see\na sane quantum. Without this, bare \"tc qdisc add ... hhf\" succeeds with\na clamped quantum but \"tc qdisc add ... hhf limit 1000\" (any option\npresent) fails with -EINVAL because hhf_change() re-validates the\nunclamped default (sch_hhf.c:559). 256 matches fq_codel's floor and is\na sane minimum for a DRR quantum.\n\nConditions to recreate the bug: a device whose MTU (plus\nhard_header_len) wraps psched_mtu() into the sign bit (e.g. a dummy\ndevice with max_mtu == 0 accepting MTU 2147483634). Requires\nCAP_NET_ADMIN in a user namespace.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-09-17 17:16:56","updated_at":"2026-09-17 17:16:56"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/99770b5d8e0e1c69b996f74a19d71afd2c4a9aa4","name":"https://git.kernel.org/stable/c/99770b5d8e0e1c69b996f74a19d71afd2c4a9aa4","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/20b65bf7ca06e48ec1d62ed8012f71205328dbe4","name":"https://git.kernel.org/stable/c/20b65bf7ca06e48ec1d62ed8012f71205328dbe4","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/0c66223e90ddb4fd3700965a9241f2fde7bd6bc7","name":"https://git.kernel.org/stable/c/0c66223e90ddb4fd3700965a9241f2fde7bd6bc7","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/fa9c2055f0a60f801ccf286af53d387dc6202c3f","name":"https://git.kernel.org/stable/c/fa9c2055f0a60f801ccf286af53d387dc6202c3f","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/dea2789a9d5ff38bdd77f2e64d550430899e2839","name":"https://git.kernel.org/stable/c/dea2789a9d5ff38bdd77f2e64d550430899e2839","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/2446644b0f6d045b01db6acbaf55552dbec8a59a","name":"https://git.kernel.org/stable/c/2446644b0f6d045b01db6acbaf55552dbec8a59a","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/2e0f0729f922c8de13801004e2131b57646c7c5f","name":"https://git.kernel.org/stable/c/2e0f0729f922c8de13801004e2131b57646c7c5f","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/2164b512b97bb053e8ce4d6e95576f11bed6a005","name":"https://git.kernel.org/stable/c/2164b512b97bb053e8ce4d6e95576f11bed6a005","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-90073","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-90073","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 10239edf86f137ce4c39b62ea9575e8053c549a0 2e0f0729f922c8de13801004e2131b57646c7c5f git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 10239edf86f137ce4c39b62ea9575e8053c549a0 0c66223e90ddb4fd3700965a9241f2fde7bd6bc7 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 10239edf86f137ce4c39b62ea9575e8053c549a0 20b65bf7ca06e48ec1d62ed8012f71205328dbe4 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 10239edf86f137ce4c39b62ea9575e8053c549a0 dea2789a9d5ff38bdd77f2e64d550430899e2839 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 10239edf86f137ce4c39b62ea9575e8053c549a0 fa9c2055f0a60f801ccf286af53d387dc6202c3f git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 10239edf86f137ce4c39b62ea9575e8053c549a0 99770b5d8e0e1c69b996f74a19d71afd2c4a9aa4 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 10239edf86f137ce4c39b62ea9575e8053c549a0 2446644b0f6d045b01db6acbaf55552dbec8a59a git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 10239edf86f137ce4c39b62ea9575e8053c549a0 2164b512b97bb053e8ce4d6e95576f11bed6a005 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3.14","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 3.14 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.10.270 5.10.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15.221 5.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.188 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.157 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.110 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.52 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.6 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3-rc1 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["net/sched/sch_hhf.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"2e0f0729f922c8de13801004e2131b57646c7c5f","status":"affected","version":"10239edf86f137ce4c39b62ea9575e8053c549a0","versionType":"git"},{"lessThan":"0c66223e90ddb4fd3700965a9241f2fde7bd6bc7","status":"affected","version":"10239edf86f137ce4c39b62ea9575e8053c549a0","versionType":"git"},{"lessThan":"20b65bf7ca06e48ec1d62ed8012f71205328dbe4","status":"affected","version":"10239edf86f137ce4c39b62ea9575e8053c549a0","versionType":"git"},{"lessThan":"dea2789a9d5ff38bdd77f2e64d550430899e2839","status":"affected","version":"10239edf86f137ce4c39b62ea9575e8053c549a0","versionType":"git"},{"lessThan":"fa9c2055f0a60f801ccf286af53d387dc6202c3f","status":"affected","version":"10239edf86f137ce4c39b62ea9575e8053c549a0","versionType":"git"},{"lessThan":"99770b5d8e0e1c69b996f74a19d71afd2c4a9aa4","status":"affected","version":"10239edf86f137ce4c39b62ea9575e8053c549a0","versionType":"git"},{"lessThan":"2446644b0f6d045b01db6acbaf55552dbec8a59a","status":"affected","version":"10239edf86f137ce4c39b62ea9575e8053c549a0","versionType":"git"},{"lessThan":"2164b512b97bb053e8ce4d6e95576f11bed6a005","status":"affected","version":"10239edf86f137ce4c39b62ea9575e8053c549a0","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["net/sched/sch_hhf.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"3.14"},{"lessThan":"3.14","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"5.10.*","status":"unaffected","version":"5.10.270","versionType":"semver"},{"lessThanOrEqual":"5.15.*","status":"unaffected","version":"5.15.221","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.188","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.157","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.110","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.52","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.6","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.3-rc1","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.10.270","versionStartIncluding":"3.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.15.221","versionStartIncluding":"3.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.188","versionStartIncluding":"3.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.157","versionStartIncluding":"3.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.110","versionStartIncluding":"3.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.52","versionStartIncluding":"3.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.6","versionStartIncluding":"3.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3-rc1","versionStartIncluding":"3.14","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/sched: hhf: clamp quantum before hhf_change() to avoid overflow\n\nhhf_init() sets q->quantum = psched_mtu(qdisc_dev(sch)) with no overflow\ncheck. A device with a huge MTU (e.g. dummy with max_mtu == 0 accepting\nMTU 2147483634) makes weight * quantum overflow the signed deficit in\nhhf_dequeue(), spinning forever.\n\nClamp q->quantum before hhf_change() so both the opt and !opt paths see\na sane quantum. Without this, bare \"tc qdisc add ... hhf\" succeeds with\na clamped quantum but \"tc qdisc add ... hhf limit 1000\" (any option\npresent) fails with -EINVAL because hhf_change() re-validates the\nunclamped default (sch_hhf.c:559). 256 matches fq_codel's floor and is\na sane minimum for a DRR quantum.\n\nConditions to recreate the bug: a device whose MTU (plus\nhard_header_len) wraps psched_mtu() into the sign bit (e.g. a dummy\ndevice with max_mtu == 0 accepting MTU 2147483634). Requires\nCAP_NET_ADMIN in a user namespace."}],"providerMetadata":{"dateUpdated":"2026-09-17T16:05:53.562Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/2e0f0729f922c8de13801004e2131b57646c7c5f"},{"url":"https://git.kernel.org/stable/c/0c66223e90ddb4fd3700965a9241f2fde7bd6bc7"},{"url":"https://git.kernel.org/stable/c/20b65bf7ca06e48ec1d62ed8012f71205328dbe4"},{"url":"https://git.kernel.org/stable/c/dea2789a9d5ff38bdd77f2e64d550430899e2839"},{"url":"https://git.kernel.org/stable/c/fa9c2055f0a60f801ccf286af53d387dc6202c3f"},{"url":"https://git.kernel.org/stable/c/99770b5d8e0e1c69b996f74a19d71afd2c4a9aa4"},{"url":"https://git.kernel.org/stable/c/2446644b0f6d045b01db6acbaf55552dbec8a59a"},{"url":"https://git.kernel.org/stable/c/2164b512b97bb053e8ce4d6e95576f11bed6a005"}],"title":"net/sched: hhf: clamp quantum before hhf_change() to avoid overflow","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-90073","datePublished":"2026-09-17T16:05:53.562Z","dateReserved":"2026-09-11T19:38:34.785Z","dateUpdated":"2026-09-17T16:05:53.562Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-17 17:16:56","lastModifiedDate":"2026-09-17 17:16:56","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"90073","Ordinal":"1","Title":"net/sched: hhf: clamp quantum before hhf_change() to avoid overf","CVE":"CVE-2026-90073","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"90073","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/sched: hhf: clamp quantum before hhf_change() to avoid overflow\n\nhhf_init() sets q->quantum = psched_mtu(qdisc_dev(sch)) with no overflow\ncheck. A device with a huge MTU (e.g. dummy with max_mtu == 0 accepting\nMTU 2147483634) makes weight * quantum overflow the signed deficit in\nhhf_dequeue(), spinning forever.\n\nClamp q->quantum before hhf_change() so both the opt and !opt paths see\na sane quantum. Without this, bare \"tc qdisc add ... hhf\" succeeds with\na clamped quantum but \"tc qdisc add ... hhf limit 1000\" (any option\npresent) fails with -EINVAL because hhf_change() re-validates the\nunclamped default (sch_hhf.c:559). 256 matches fq_codel's floor and is\na sane minimum for a DRR quantum.\n\nConditions to recreate the bug: a device whose MTU (plus\nhard_header_len) wraps psched_mtu() into the sign bit (e.g. a dummy\ndevice with max_mtu == 0 accepting MTU 2147483634). Requires\nCAP_NET_ADMIN in a user namespace.","Type":"Description","Title":"net/sched: hhf: clamp quantum before hhf_change() to avoid overf"}]}}}