CVE-2026-64207 (GCVE-0-2026-64207)

Vulnerability from cvelistv5 – Published: 2026-07-20 16:27 – Updated: 2026-07-20 16:27
VLAI
Title
net/sched: dualpi2: fix GSO backlog accounting
Summary
In the Linux kernel, the following vulnerability has been resolved: net/sched: dualpi2: fix GSO backlog accounting When DualPI2 splits a GSO skb into N segments, it propagates N additional packets to its parent before returning NET_XMIT_SUCCESS. The parent then accounts for the original skb once more, leaving its qlen one larger than the number of packets actually queued. With QFQ as the parent, after all real packets are dequeued, QFQ still has a non-zero qlen while its in-service aggregate has no active classes. qfq_choose_next_agg() returns NULL and qfq_dequeue() passes the result to qfq_peek_skb(), causing a NULL pointer dereference. Follow the same pattern used by tbf_segment() and taprio: count only successfully queued segments, propagate the difference between the original skb and those segments, and return NET_XMIT_SUCCESS whenever at least one segment was queued.
Severity
No CVSS data available.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: 8f9516daedd67097a0c6e463fcb7a42b5ee9d477 , < c4b70c1512b8f9f33f23c2c8196dfd1210207681 (git)
Affected: 8f9516daedd67097a0c6e463fcb7a42b5ee9d477 , < 806586e33891066487db1f002be3d455cda6b516 (git)
Affected: 8f9516daedd67097a0c6e463fcb7a42b5ee9d477 , < 05ed733b65ab977dd931e7f7ac0f62fdb81205c2 (git)
Create a notification for this product.
Linux Linux Affected: 6.17
Unaffected: 0 , < 6.17 (semver)
Unaffected: 6.18.39 , ≤ 6.18.* (semver)
Unaffected: 7.1.4 , ≤ 7.1.* (semver)
Unaffected: 7.2-rc1 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/sched/sch_dualpi2.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "c4b70c1512b8f9f33f23c2c8196dfd1210207681",
              "status": "affected",
              "version": "8f9516daedd67097a0c6e463fcb7a42b5ee9d477",
              "versionType": "git"
            },
            {
              "lessThan": "806586e33891066487db1f002be3d455cda6b516",
              "status": "affected",
              "version": "8f9516daedd67097a0c6e463fcb7a42b5ee9d477",
              "versionType": "git"
            },
            {
              "lessThan": "05ed733b65ab977dd931e7f7ac0f62fdb81205c2",
              "status": "affected",
              "version": "8f9516daedd67097a0c6e463fcb7a42b5ee9d477",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/sched/sch_dualpi2.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.17"
            },
            {
              "lessThan": "6.17",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.39",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.39",
                  "versionStartIncluding": "6.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.4",
                  "versionStartIncluding": "6.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2-rc1",
                  "versionStartIncluding": "6.17",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/sched: dualpi2: fix GSO backlog accounting\n\nWhen DualPI2 splits a GSO skb into N segments, it propagates N\nadditional packets to its parent before returning NET_XMIT_SUCCESS.\nThe parent then accounts for the original skb once more, leaving its\nqlen one larger than the number of packets actually queued.\n\nWith QFQ as the parent, after all real packets are dequeued, QFQ still\nhas a non-zero qlen while its in-service aggregate has no active\nclasses. qfq_choose_next_agg() returns NULL and qfq_dequeue() passes\nthe result to qfq_peek_skb(), causing a NULL pointer dereference.\n\nFollow the same pattern used by tbf_segment() and taprio: count only\nsuccessfully queued segments, propagate the difference between the\noriginal skb and those segments, and return NET_XMIT_SUCCESS whenever\nat least one segment was queued."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-07-20T16:27:54.447Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/c4b70c1512b8f9f33f23c2c8196dfd1210207681"
        },
        {
          "url": "https://git.kernel.org/stable/c/806586e33891066487db1f002be3d455cda6b516"
        },
        {
          "url": "https://git.kernel.org/stable/c/05ed733b65ab977dd931e7f7ac0f62fdb81205c2"
        }
      ],
      "title": "net/sched: dualpi2: fix GSO backlog accounting",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-64207",
    "datePublished": "2026-07-20T16:27:54.447Z",
    "dateReserved": "2026-07-19T15:36:31.769Z",
    "dateUpdated": "2026-07-20T16:27:54.447Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-64207",
      "date": "2026-07-22",
      "epss": "0.00155",
      "percentile": "0.05151"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-64207\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-07-20T17:18:22.733\",\"lastModified\":\"2026-07-20T17:18:22.733\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnet/sched: dualpi2: fix GSO backlog accounting\\n\\nWhen DualPI2 splits a GSO skb into N segments, it propagates N\\nadditional packets to its parent before returning NET_XMIT_SUCCESS.\\nThe parent then accounts for the original skb once more, leaving its\\nqlen one larger than the number of packets actually queued.\\n\\nWith QFQ as the parent, after all real packets are dequeued, QFQ still\\nhas a non-zero qlen while its in-service aggregate has no active\\nclasses. qfq_choose_next_agg() returns NULL and qfq_dequeue() passes\\nthe result to qfq_peek_skb(), causing a NULL pointer dereference.\\n\\nFollow the same pattern used by tbf_segment() and taprio: count only\\nsuccessfully queued segments, propagate the difference between the\\noriginal skb and those segments, and return NET_XMIT_SUCCESS whenever\\nat least one segment was queued.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"net/sched/sch_dualpi2.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"8f9516daedd67097a0c6e463fcb7a42b5ee9d477\",\"lessThan\":\"c4b70c1512b8f9f33f23c2c8196dfd1210207681\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"8f9516daedd67097a0c6e463fcb7a42b5ee9d477\",\"lessThan\":\"806586e33891066487db1f002be3d455cda6b516\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"8f9516daedd67097a0c6e463fcb7a42b5ee9d477\",\"lessThan\":\"05ed733b65ab977dd931e7f7ac0f62fdb81205c2\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"net/sched/sch_dualpi2.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.17\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.17\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.39\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1.4\",\"lessThanOrEqual\":\"7.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2-rc1\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/05ed733b65ab977dd931e7f7ac0f62fdb81205c2\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/806586e33891066487db1f002be3d455cda6b516\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/c4b70c1512b8f9f33f23c2c8196dfd1210207681\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "None",
      "current_release_date": "2026-07-22T03:07:21+00:00",
      "cve": "CVE-2026-64207",
      "id": "CVE-2026-64207",
      "initial_release_date": "2026-07-20T00:00:00+00:00",
      "product_status:known_not_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: net/sched: dualpi2: fix GSO backlog accounting",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-64207.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-07-21T23:47:33Z",
      "cve": "CVE-2026-64207",
      "id": "CVE-2026-64207",
      "initial_release_date": "2026-07-21T12:57:58Z",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-64207",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-64207.json",
      "version": "3"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…