CVE-2026-46194 (GCVE-0-2026-46194)

Vulnerability from cvelistv5 – Published: 2026-05-28 09:36 – Updated: 2026-05-28 09:36
VLAI
Title
f2fs: fix node_cnt race between extent node destroy and writeback
Summary
In the Linux kernel, the following vulnerability has been resolved: f2fs: fix node_cnt race between extent node destroy and writeback f2fs_destroy_extent_node() does not set FI_NO_EXTENT before clearing extent nodes. When called from f2fs_drop_inode() with I_SYNC set, concurrent kworker writeback can insert new extent nodes into the same extent tree, racing with the destroy and triggering f2fs_bug_on() in __destroy_extent_node(). The scenario is as follows: drop inode writeback - iput - f2fs_drop_inode // I_SYNC set - f2fs_destroy_extent_node - __destroy_extent_node - while (node_cnt) { write_lock(&et->lock) __free_extent_tree write_unlock(&et->lock) - __writeback_single_inode - f2fs_outplace_write_data - f2fs_update_read_extent_cache - __update_extent_tree_range // FI_NO_EXTENT not set, // insert new extent node } // node_cnt == 0, exit while - f2fs_bug_on(node_cnt) // node_cnt > 0 Additionally, __update_extent_tree_range() only checks FI_NO_EXTENT for EX_READ type, leaving EX_BLOCK_AGE updates completely unprotected. This patch set FI_NO_EXTENT under et->lock in __destroy_extent_node(), consistent with other callers (__update_extent_tree_range and __drop_extent_tree) and check FI_NO_EXTENT for both EX_READ and EX_BLOCK_AGE tree.
Severity
No CVSS data available.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: 295b50e95e900da31ff237e46e04525fa799b2cf , < 42dd1c91f993431d0b399502479d00e6ad1bca71 (git)
Affected: 924f7dd1e832e4e4530d14711db223d2803f7b61 , < ab1eaf9d5c99042f5b0243bf67a06283a4c0757f (git)
Affected: 3fc5d5a182f6a1f8bd4dc775feb54c369dd2c343 , < b0e4395870eb3441ddc959f6710b5f6ca61aff26 (git)
Affected: 3fc5d5a182f6a1f8bd4dc775feb54c369dd2c343 , < 0559a0e962aacbb47519e26ee663be04b72dcb92 (git)
Affected: 3fc5d5a182f6a1f8bd4dc775feb54c369dd2c343 , < ed78aeebef05212ef7dca93bd931e4eff67c113f (git)
Affected: 6.6.66 , < 6.6.140 (semver)
Affected: 6.12.5 , < 6.12.88 (semver)
Create a notification for this product.
Linux Linux Affected: 6.13
Unaffected: 0 , < 6.13 (semver)
Unaffected: 6.6.140 , ≤ 6.6.* (semver)
Unaffected: 6.12.88 , ≤ 6.12.* (semver)
Unaffected: 6.18.30 , ≤ 6.18.* (semver)
Unaffected: 7.0.7 , ≤ 7.0.* (semver)
Unaffected: 7.1-rc1 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/f2fs/extent_cache.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "42dd1c91f993431d0b399502479d00e6ad1bca71",
              "status": "affected",
              "version": "295b50e95e900da31ff237e46e04525fa799b2cf",
              "versionType": "git"
            },
            {
              "lessThan": "ab1eaf9d5c99042f5b0243bf67a06283a4c0757f",
              "status": "affected",
              "version": "924f7dd1e832e4e4530d14711db223d2803f7b61",
              "versionType": "git"
            },
            {
              "lessThan": "b0e4395870eb3441ddc959f6710b5f6ca61aff26",
              "status": "affected",
              "version": "3fc5d5a182f6a1f8bd4dc775feb54c369dd2c343",
              "versionType": "git"
            },
            {
              "lessThan": "0559a0e962aacbb47519e26ee663be04b72dcb92",
              "status": "affected",
              "version": "3fc5d5a182f6a1f8bd4dc775feb54c369dd2c343",
              "versionType": "git"
            },
            {
              "lessThan": "ed78aeebef05212ef7dca93bd931e4eff67c113f",
              "status": "affected",
              "version": "3fc5d5a182f6a1f8bd4dc775feb54c369dd2c343",
              "versionType": "git"
            },
            {
              "lessThan": "6.6.140",
              "status": "affected",
              "version": "6.6.66",
              "versionType": "semver"
            },
            {
              "lessThan": "6.12.88",
              "status": "affected",
              "version": "6.12.5",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/f2fs/extent_cache.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.13"
            },
            {
              "lessThan": "6.13",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.140",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.88",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.30",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.0.*",
              "status": "unaffected",
              "version": "7.0.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.1-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.140",
                  "versionStartIncluding": "6.6.66",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.88",
                  "versionStartIncluding": "6.12.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.30",
                  "versionStartIncluding": "6.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0.7",
                  "versionStartIncluding": "6.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1-rc1",
                  "versionStartIncluding": "6.13",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nf2fs: fix node_cnt race between extent node destroy and writeback\n\nf2fs_destroy_extent_node() does not set FI_NO_EXTENT before clearing\nextent nodes. When called from f2fs_drop_inode() with I_SYNC set,\nconcurrent kworker writeback can insert new extent nodes into the same\nextent tree, racing with the destroy and triggering f2fs_bug_on() in\n__destroy_extent_node(). The scenario is as follows:\n\ndrop inode                            writeback\n - iput\n  - f2fs_drop_inode  // I_SYNC set\n   - f2fs_destroy_extent_node\n    - __destroy_extent_node\n     - while (node_cnt) {\n        write_lock(\u0026et-\u003elock)\n        __free_extent_tree\n        write_unlock(\u0026et-\u003elock)\n                                       - __writeback_single_inode\n                                        - f2fs_outplace_write_data\n                                         - f2fs_update_read_extent_cache\n                                          - __update_extent_tree_range\n                                           // FI_NO_EXTENT not set,\n                                           // insert new extent node\n       } // node_cnt == 0, exit while\n     - f2fs_bug_on(node_cnt)  // node_cnt \u003e 0\n\nAdditionally, __update_extent_tree_range() only checks FI_NO_EXTENT for\nEX_READ type, leaving EX_BLOCK_AGE updates completely unprotected.\n\nThis patch set FI_NO_EXTENT under et-\u003elock in __destroy_extent_node(),\nconsistent with other callers (__update_extent_tree_range and\n__drop_extent_tree) and check FI_NO_EXTENT for both EX_READ and\nEX_BLOCK_AGE tree."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-05-28T09:36:47.461Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/42dd1c91f993431d0b399502479d00e6ad1bca71"
        },
        {
          "url": "https://git.kernel.org/stable/c/ab1eaf9d5c99042f5b0243bf67a06283a4c0757f"
        },
        {
          "url": "https://git.kernel.org/stable/c/b0e4395870eb3441ddc959f6710b5f6ca61aff26"
        },
        {
          "url": "https://git.kernel.org/stable/c/0559a0e962aacbb47519e26ee663be04b72dcb92"
        },
        {
          "url": "https://git.kernel.org/stable/c/ed78aeebef05212ef7dca93bd931e4eff67c113f"
        }
      ],
      "title": "f2fs: fix node_cnt race between extent node destroy and writeback",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-46194",
    "datePublished": "2026-05-28T09:36:47.461Z",
    "dateReserved": "2026-05-13T15:03:33.104Z",
    "dateUpdated": "2026-05-28T09:36:47.461Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-46194",
      "date": "2026-05-29",
      "epss": "0.00018",
      "percentile": "0.05164"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-46194\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-05-28T10:16:35.033\",\"lastModified\":\"2026-05-28T13:44:01.663\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nf2fs: fix node_cnt race between extent node destroy and writeback\\n\\nf2fs_destroy_extent_node() does not set FI_NO_EXTENT before clearing\\nextent nodes. When called from f2fs_drop_inode() with I_SYNC set,\\nconcurrent kworker writeback can insert new extent nodes into the same\\nextent tree, racing with the destroy and triggering f2fs_bug_on() in\\n__destroy_extent_node(). The scenario is as follows:\\n\\ndrop inode                            writeback\\n - iput\\n  - f2fs_drop_inode  // I_SYNC set\\n   - f2fs_destroy_extent_node\\n    - __destroy_extent_node\\n     - while (node_cnt) {\\n        write_lock(\u0026et-\u003elock)\\n        __free_extent_tree\\n        write_unlock(\u0026et-\u003elock)\\n                                       - __writeback_single_inode\\n                                        - f2fs_outplace_write_data\\n                                         - f2fs_update_read_extent_cache\\n                                          - __update_extent_tree_range\\n                                           // FI_NO_EXTENT not set,\\n                                           // insert new extent node\\n       } // node_cnt == 0, exit while\\n     - f2fs_bug_on(node_cnt)  // node_cnt \u003e 0\\n\\nAdditionally, __update_extent_tree_range() only checks FI_NO_EXTENT for\\nEX_READ type, leaving EX_BLOCK_AGE updates completely unprotected.\\n\\nThis patch set FI_NO_EXTENT under et-\u003elock in __destroy_extent_node(),\\nconsistent with other callers (__update_extent_tree_range and\\n__drop_extent_tree) and check FI_NO_EXTENT for both EX_READ and\\nEX_BLOCK_AGE tree.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/0559a0e962aacbb47519e26ee663be04b72dcb92\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/42dd1c91f993431d0b399502479d00e6ad1bca71\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/ab1eaf9d5c99042f5b0243bf67a06283a4c0757f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/b0e4395870eb3441ddc959f6710b5f6ca61aff26\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/ed78aeebef05212ef7dca93bd931e4eff67c113f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


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…