Skip to content
Heist/ feed
Back to feed
MediumFix available

net/sched: netem: account for backlog updates from child qdisc

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: net/sched: netem: account for backlog updates from child qdisc In general, 'qlen' of any classful qdisc should keep track of the number of packets that the qdisc itself and all of its children holds. In case of netem, 'qlen' only accounts for the packets in its internal tfifo. When netem is used with a child qdisc, the child qdisc can use 'qdisc_tree_reduce_backlog' to inform its parent, netem, about created or dropped SKBs. This function updates 'qlen' and the backlog statistics of netem, but netem does not account for changes made by a child qdisc. 'qlen' then indicates the wrong number of packets in the tfifo. If a child qdisc creates new SKBs during enqueue and informs its parent about this, netem's 'qlen' value is increased. When netem dequeues the newly created SKBs from the child, the 'qlen' in netem is not updated. If 'qlen' reaches the configured sch->limit, the enqueue function stops working, even though the tfifo is not full. Reproduce the bug: Ensure that the sender machine has GSO enabled. Configure netem as root qdisc and tbf as its child on the outgoing interface of the machine as follows: $ tc qdisc add dev root handle 1: netem delay 100ms limit 100 $ tc qdisc add dev parent 1:0 tbf rate 50Mbit burst 1542 latency 50ms Send bulk TCP traffic out via this interface, e.g., by running an iPerf3 client on the machine. Check the qdisc statistics: $ tc -s qdisc show dev Statistics after 10s of iPerf3

Products
Kernel
Affected versions
Not specified
Fixed versions
5.10.232, 5.15.175, 5.4.288, 6.1.121, 6.12.6, 6.6.67
CVEs
CVE-2024-56770
Confirmed fixed CVEs
Not specified
Updated in this feed
7 Nov 2026, 11:40 UTC · Revision 1

Source evidence

net/sched: netem: account for backlog updates from child qdisc

core-osv · Original source

Published 8 Jan 2025, 16:36 UTC

In the Linux kernel, the following vulnerability has been resolved: net/sched: netem: account for backlog updates from child qdisc In general, 'qlen' of any classful qdisc should keep track of the number of packets that the qdisc itself and all of its children holds. In case of netem, 'qlen' only accounts for the packets in its internal tfifo. When netem is used with a child qdisc, the child qdisc can use 'qdisc_tree_reduce_backlog' to inform its parent, netem, about created or dropped SKBs. This function updates 'qlen' and the backlog statistics of netem, but netem does not account for changes made by a child qdisc. 'qlen' then indicates the wrong number of packets in the tfifo. If a child qdisc creates new SKBs during enqueue and informs its parent about this, netem's 'qlen' value is increased. When netem dequeues the newly created SKBs from the child, the 'qlen' in netem is not updated. If 'qlen' reaches the configured sch->limit, the enqueue function stops working, even though the tfifo is not full. Reproduce the bug: Ensure that the sender machine has GSO enabled. Configure netem as root qdisc and tbf as its child on the outgoing interface of the machine as follows: $ tc qdisc add dev root handle 1: netem delay 100ms limit 100 $ tc qdisc add dev parent 1:0 tbf rate 50Mbit burst 1542 latency 50ms Send bulk TCP traffic out via this interface, e.g., by running an iPerf3 client on the machine. Check the qdisc statistics: $ tc -s qdisc show dev Statistics after 10s of iPerf3

osv:CVE-2024-56770

Kernel

Fixed versions: 5.4.288, 5.10.232, 5.15.175, 6.1.121, 6.6.67, 6.12.6

Complete source record
{
  "id": "df505feadd1fee82728658fb5b89127d88eb8d42bd5804e661c979d3ae2f35bd",
  "url": "https://osv.dev/vulnerability/CVE-2024-56770",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "net/sched: netem: account for backlog updates from child qdisc",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: net/sched: netem: account for backlog updates from child qdisc In general, 'qlen' of any classful qdisc should keep track of the number of packets that the qdisc itself and all of its children holds. In case of netem, 'qlen' only accounts for the packets in its internal tfifo. When netem is used with a child qdisc, the child qdisc can use 'qdisc_tree_reduce_backlog' to inform its parent, netem, about created or dropped SKBs. This function updates 'qlen' and the backlog statistics of netem, but netem does not account for changes made by a child qdisc. 'qlen' then indicates the wrong number of packets in the tfifo. If a child qdisc creates new SKBs during enqueue and informs its parent about this, netem's 'qlen' value is increased. When netem dequeues the newly created SKBs from the child, the 'qlen' in netem is not updated. If 'qlen' reaches the configured sch->limit, the enqueue function stops working, even though the tfifo is not full. Reproduce the bug: Ensure that the sender machine has GSO enabled. Configure netem as root qdisc and tbf as its child on the outgoing interface of the machine as follows: $ tc qdisc add dev root handle 1: netem delay 100ms limit 100 $ tc qdisc add dev parent 1:0 tbf rate 50Mbit burst 1542 latency 50ms Send bulk TCP traffic out via this interface, e.g., by running an iPerf3 client on the machine. Check the qdisc statistics: $ tc -s qdisc show dev Statistics after 10s of iPerf3 ",
    "evidence": "osv:CVE-2024-56770",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "5.4.288",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "5.10.232",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "5.15.175",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.1.121",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.6.67",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.6",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "medium",
    "structured": {
      "id": "CVE-2024-56770",
      "aliases": [
        "CVE-2024-56770"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "50612537e9ab29693122fab20fc1eed235054ffe"
                },
                {
                  "fixed": "83c6ab12f08dcc09d4c5ac86fdb89736b28f1d31"
                },
                {
                  "fixed": "216509dda290f6db92c816dd54b83c1df9da9e76"
                },
                {
                  "fixed": "c2047b0e216c8edce227d7c42f99ac2877dad0e4"
                },
                {
                  "fixed": "10df49cfca73dfbbdb6c4150d859f7e8926ae427"
                },
                {
                  "fixed": "3824c5fad18eeb7abe0c4fc966f29959552dca3e"
                },
                {
                  "fixed": "356078a5c55ec8d2061fcc009fb8599f5b0527f9"
                },
                {
                  "fixed": "f8d4bc455047cf3903cd6f85f49978987dbb3027"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-56770.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "3.3.0"
                },
                {
                  "fixed": "5.4.288"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.5.0"
                },
                {
                  "fixed": "5.10.232"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.11.0"
                },
                {
                  "fixed": "5.15.175"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.16.0"
                },
                {
                  "fixed": "6.1.121"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.67"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.12.6"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-56770.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:50.773353686Z",
      "provider": "osv",
      "references": [
        "https://cert-portal.siemens.com/productcert/html/ssa-355557.html",
        "https://cert-portal.siemens.com/productcert/html/ssa-398330.html",
        "https://git.kernel.org/stable/c/10df49cfca73dfbbdb6c4150d859f7e8926ae427",
        "https://git.kernel.org/stable/c/216509dda290f6db92c816dd54b83c1df9da9e76",
        "https://git.kernel.org/stable/c/356078a5c55ec8d2061fcc009fb8599f5b0527f9",
        "https://git.kernel.org/stable/c/3824c5fad18eeb7abe0c4fc966f29959552dca3e",
        "https://git.kernel.org/stable/c/83c6ab12f08dcc09d4c5ac86fdb89736b28f1d31",
        "https://git.kernel.org/stable/c/c2047b0e216c8edce227d7c42f99ac2877dad0e4",
        "https://git.kernel.org/stable/c/f8d4bc455047cf3903cd6f85f49978987dbb3027",
        "https://lists.debian.org/debian-lts-announce/2025/03/msg00001.html",
        "https://lists.debian.org/debian-lts-announce/2025/03/msg00002.html",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/56xxx/CVE-2024-56770.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2024-56770",
        "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
      ],
      "provider_metadata": {
        "cna_assigner": "Linux",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/56xxx/CVE-2024-56770.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2024-56770",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 519159,
  "published_at": "2025-01-08T16:36:59.315+00:00"
}