Skip to content
Heist/ feed
Back to feed
HighFix available

ipvs: stop estimator after disabled calc phase

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: ipvs: stop estimator after disabled calc phase IPVS estimator kthread 0 starts with zeroed chain and tick limits until its initial calculation phase completes. If network namespace teardown clears ipvs->enable during that phase, ip_vs_est_calc_phase() can return without installing positive limits. The kthread can then continue into its main loop and drain est_temp_list with zero chain_max, tick_max and est_max_count values. Each enqueue consumes one available tick row, but est_count never reaches the zero est_max_count value. After all rows are consumed, the row lookup returns IPVS_EST_NTICKS and ip_vs_enqueue_estimator() writes past the ticks and tick_len arrays. Exit kthread 0 after the calculation phase if the kthread is stopping or IPVS has been disabled. That keeps temporary estimators from being drained after the limits failed to initialize. Estimator kthreads can now self-exit before teardown or reload stops kd->task. Keep an extra task reference after creation and release it with kthread_stop_put(), so kd->task remains valid until the stop paths consume that reference.

Products
Kernel
Affected versions
Not specified
Fixed versions
6.12.104, 6.18.45, 6.6.152, 7.1.9
CVEs
CVE-2026-74670
Confirmed fixed CVEs
Not specified
Updated in this feed
6 Nov 2026, 02:51 UTC · Revision 1

Source evidence

ipvs: stop estimator after disabled calc phase

core-osv · Original source

Published 22 Aug 2026, 15:32 UTC

In the Linux kernel, the following vulnerability has been resolved: ipvs: stop estimator after disabled calc phase IPVS estimator kthread 0 starts with zeroed chain and tick limits until its initial calculation phase completes. If network namespace teardown clears ipvs->enable during that phase, ip_vs_est_calc_phase() can return without installing positive limits. The kthread can then continue into its main loop and drain est_temp_list with zero chain_max, tick_max and est_max_count values. Each enqueue consumes one available tick row, but est_count never reaches the zero est_max_count value. After all rows are consumed, the row lookup returns IPVS_EST_NTICKS and ip_vs_enqueue_estimator() writes past the ticks and tick_len arrays. Exit kthread 0 after the calculation phase if the kthread is stopping or IPVS has been disabled. That keeps temporary estimators from being drained after the limits failed to initialize. Estimator kthreads can now self-exit before teardown or reload stops kd->task. Keep an extra task reference after creation and release it with kthread_stop_put(), so kd->task remains valid until the stop paths consume that reference.

osv:CVE-2026-74670

Kernel

Fixed versions: 6.6.152, 6.12.104, 6.18.45, 7.1.9

Complete source record
{
  "id": "3c46f2b0197a1b1da8787b510fd2c61319db02f0f6eb327247e54c383ac1aa9d",
  "url": "https://osv.dev/vulnerability/CVE-2026-74670",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "ipvs: stop estimator after disabled calc phase",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: ipvs: stop estimator after disabled calc phase IPVS estimator kthread 0 starts with zeroed chain and tick limits until its initial calculation phase completes. If network namespace teardown clears ipvs->enable during that phase, ip_vs_est_calc_phase() can return without installing positive limits. The kthread can then continue into its main loop and drain est_temp_list with zero chain_max, tick_max and est_max_count values. Each enqueue consumes one available tick row, but est_count never reaches the zero est_max_count value. After all rows are consumed, the row lookup returns IPVS_EST_NTICKS and ip_vs_enqueue_estimator() writes past the ticks and tick_len arrays. Exit kthread 0 after the calculation phase if the kthread is stopping or IPVS has been disabled. That keeps temporary estimators from being drained after the limits failed to initialize. Estimator kthreads can now self-exit before teardown or reload stops kd->task. Keep an extra task reference after creation and release it with kthread_stop_put(), so kd->task remains valid until the stop paths consume that reference.",
    "evidence": "osv:CVE-2026-74670",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "6.6.152",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.104",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.18.45",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "7.1.9",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-74670",
      "aliases": [
        "CVE-2026-74670"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "705dd34440812735ece298eb5bc153fde9544d42"
                },
                {
                  "fixed": "d5122a2b2601145975d387006e517c56896e310e"
                },
                {
                  "fixed": "de98dc5ef94b83bbb444c670c253ea02ca0f5e43"
                },
                {
                  "fixed": "e7f34f29b330265d456943bf0b984dcecfcef9af"
                },
                {
                  "fixed": "2335dedc1922dfa889ca1f9f70370924e8e79a08"
                },
                {
                  "fixed": "558f67f1340f803a346ecd14a69c49653111c5f4"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74670.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.152"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.12.104"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.13.0"
                },
                {
                  "fixed": "6.18.45"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.19.0"
                },
                {
                  "fixed": "7.1.9"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74670.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:46.507788702Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/2335dedc1922dfa889ca1f9f70370924e8e79a08",
        "https://git.kernel.org/stable/c/558f67f1340f803a346ecd14a69c49653111c5f4",
        "https://git.kernel.org/stable/c/d5122a2b2601145975d387006e517c56896e310e",
        "https://git.kernel.org/stable/c/de98dc5ef94b83bbb444c670c253ea02ca0f5e43",
        "https://git.kernel.org/stable/c/e7f34f29b330265d456943bf0b984dcecfcef9af",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/74xxx/CVE-2026-74670.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-74670",
        "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/2026/74xxx/CVE-2026-74670.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-74670",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 514430,
  "published_at": "2026-08-22T15:32:40.85+00:00"
}