« Volver al listado

CVE-2026-74284

Estado: RecibidaSin puntuar—

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:

On the second call the class is already passive, but its child qdisc is still empty, so update_vf() arms go_passive again:

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.

Leer descripción completaMostrar menos

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.

Detalles técnicos trazas, registros y código del informe original
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.

      if (cl->qdisc->q.qlen == 0 && cl->cl_flags & HFSC_FSC)
              go_passive = 1;

CVSS

NVD no ha asignado puntuación CVSS a esta CVE (habitual desde el cambio de política de abril de 2026).

Probabilidad de explotación (EPSS)

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

Tecnologías afectadas (1)

⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-74284",
  "cveTags": [],
  "metrics": {},
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "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"
        }
      ]
    }
  ],
  "published": "2026-08-15T06:22:27.903",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/15720cd8fa3fc625146128f89a8e11b0449a20a7",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/3a49bbae676fef1ffe548971e6229ae2adeb9d10",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/66dbb13eeb2fc339f8f548a9076be4c1a94857b0",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/90b662ea25f5e83bb3b8ccec5b93ced810b92fb8",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/9221a594c72a1446137926d4c2aa04e345f798dc",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/a425c82ff06cda5165e0de3de8c2a445ec1f863e",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/b2a017bfcf565721918ec7355a373911d2f2a227",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/fc973ecd1a079b9a87c360478542f3a56dea085b",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Received",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/sched: sch_hfsc: Don't make class passive twice\n\nupdate_vf() is called from two places for the same class during a single\ndequeue when the class's child qdisc (e.g. codel/fq_codel) drops its last\npackets while dequeuing:\n\n1. The child calls qdisc_tree_reduce_backlog(), which, now that the child\n   is empty, invokes hfsc_qlen_notify() -> update_vf(cl, 0, 0) and turns\n   the class passive (cl_nactive is decremented up the hierarchy).\n\n2. hfsc_dequeue() then calls update_vf(cl, qdisc_pkt_len(skb), cur_time)\n   to charge the dequeued bytes.\n\nOn the second call the class is already passive, but its child qdisc is\nstill empty, so update_vf() arms go_passive again:\n\n      if (cl->qdisc->q.qlen == 0 && cl->cl_flags & HFSC_FSC)\n              go_passive = 1;\n\nThe leaf is then skipped by the cl_nactive == 0 check inside the loop,\nwhich does not clear go_passive, so the stale go_passive propagates to the\nparent and decrements its cl_nactive a second time. A parent that still\nhas other active children is driven to cl_nactive == 0 and removed from\nthe vttree, even though those siblings are still backlogged. They are\nnever dequeued again and the qdisc stalls.\n\nFix this by only arming go_passive when the class is actually active, so an\nalready-passive class no longer triggers a second passive transition. The\nbyte accounting (cl->cl_total += len) still runs for every ancestor, so\ndequeued bytes continue to be counted exactly once."
    }
  ],
  "lastModified": "2026-08-17T06:19:22.257",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}