CVE-2026-92502 (GCVE-0-2026-92502)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:10 – Updated: 2026-09-17 16:10
VLAI
Title
ext4: clear stale xarray tags on folios skipped during writeback
Summary
In the Linux kernel, the following vulnerability has been resolved: ext4: clear stale xarray tags on folios skipped during writeback In data=journal mode, the writeback thread can hit the WARN_ON_ONCE(sb_rdonly(sb)) in ext4_journal_check_start() while the superblock is being remounted read-only during reboot: Workqueue: writeback wb_workfn (flush-253:0) RIP: 0010:ext4_journal_check_start+0x8b/0xd0 Call Trace: __ext4_journal_start_sb+0x3c/0x1e0 mpage_prepare_extent_to_map+0x4af/0x580 ext4_do_writepages+0x3c0/0x1080 ext4_writepages+0xc8/0x1a0 do_writepages+0xc4/0x180 __writeback_single_inode+0x45/0x2f0 writeback_sb_inodes+0x26b/0x5d0 __writeback_inodes_wb+0x54/0x100 wb_writeback+0x1ac/0x320 wb_workfn+0x394/0x470 And followed by the warning: EXT4-fs warning (device vda1): ext4_evict_inode:195: inode #6263: comm (sd-umount): data will be lost This issue is not reproduced every time, but frequently. The reproduction step is to create a VM with 8 CPUs, 16G memory and setup data=journal: sudo tune2fs -o journal_data /dev/vda1 Run fio: rm -f fiotest fio --name=fiotest --rw=randwrite --bs=4k --runtime=6 --ioengine=libaio --iodepth=256 --numjobs=8 --filename=fiotest --filesize=30G --group_reporting Reboot the VM, and check the console output from: virsh console testvm But there is no dirty inode, folio_clear_dirty_for_io clears PG_dirty but leaves tags PAGECACHE_TAG_DIRTY and PAGECACHE_TAG_TOWRITE set which are only cleared by __folio_start_writeback. In data=journal mode, jbd2 checkpoints the journalled data to its final location and clears its own dirty flag without touching folio PG_dirty or xarray dirty flags. The commit f4a2b42e7891 ("ext4: fix stale xarray tags after writeback") fixes when PG_dirty is still set but there is no dirty page. Another case is PG_dirty is cleared, but PAGECACHE_TAG_DIRTY and PAGECACHE_TAG_TOWRITE is still set. In this case, writeback thread checks clean folio and skips it in mpage_prepare_extent_to_map: if (!folio_test_dirty(folio) || ... folio_unlcok(folio); continue And never reaches ext4_bio_write_folio where the commit f4a2b42e7891 clears the stale xarray tags. Print debug logs after the filesystem is remounted read-only: writepages RDONLY nrpages=2048 dirtytag=1 wbtag=0 towrite=1 sync=0 And all folios are actually clean: folio idx=3 dirty=0 wb=0 checked=0 dirtybuf=0 jbddirty=0 mapped=1 ... We need to clear the xarray stale tags for such clean folios by cycling them through writeback in the skip path, the same way f4a2b42e7891 does in ext4_bio_write_folio.
Severity
No CVSS data available.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7 , < f82a4929d0ef7ddf254c1c295ec1dfd24094f2de (git)
Affected: dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7 , < a450ab88bfd57b227d72c7a3faad54d16c3fc099 (git)
Affected: dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7 , < aa0042630b1f7cab735b0a168539281198822586 (git)
Affected: dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7 , < 43ae387c3ae6a11227d096669ddf883e27a39a11 (git)
Affected: dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7 , < ec524aae479b4b2078c47492b90ec21200bce434 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.2
Unaffected: 0 , < 6.2 (semver)
Unaffected: 6.6.157 , ≤ 6.6.* (semver)
Unaffected: 6.12.110 , ≤ 6.12.* (semver)
Unaffected: 6.18.52 , ≤ 6.18.* (semver)
Unaffected: 7.2.6 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/ext4/inode.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "f82a4929d0ef7ddf254c1c295ec1dfd24094f2de",
              "status": "affected",
              "version": "dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7",
              "versionType": "git"
            },
            {
              "lessThan": "a450ab88bfd57b227d72c7a3faad54d16c3fc099",
              "status": "affected",
              "version": "dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7",
              "versionType": "git"
            },
            {
              "lessThan": "aa0042630b1f7cab735b0a168539281198822586",
              "status": "affected",
              "version": "dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7",
              "versionType": "git"
            },
            {
              "lessThan": "43ae387c3ae6a11227d096669ddf883e27a39a11",
              "status": "affected",
              "version": "dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7",
              "versionType": "git"
            },
            {
              "lessThan": "ec524aae479b4b2078c47492b90ec21200bce434",
              "status": "affected",
              "version": "dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/ext4/inode.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.2"
            },
            {
              "lessThan": "6.2",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.157",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.110",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.52",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.157",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.110",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.52",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\next4: clear stale xarray tags on folios skipped during writeback\n\nIn data=journal mode, the writeback thread can hit the\nWARN_ON_ONCE(sb_rdonly(sb)) in ext4_journal_check_start() while the\nsuperblock is being remounted read-only during reboot:\n\nWorkqueue: writeback wb_workfn (flush-253:0)\nRIP: 0010:ext4_journal_check_start+0x8b/0xd0\nCall Trace:\n  __ext4_journal_start_sb+0x3c/0x1e0\n  mpage_prepare_extent_to_map+0x4af/0x580\n  ext4_do_writepages+0x3c0/0x1080\n  ext4_writepages+0xc8/0x1a0\n  do_writepages+0xc4/0x180\n  __writeback_single_inode+0x45/0x2f0\n  writeback_sb_inodes+0x26b/0x5d0\n  __writeback_inodes_wb+0x54/0x100\n  wb_writeback+0x1ac/0x320\n  wb_workfn+0x394/0x470\n\nAnd followed by the warning:\nEXT4-fs warning (device vda1): ext4_evict_inode:195: inode #6263:\ncomm (sd-umount): data will be lost\n\nThis issue is not reproduced every time, but frequently.\nThe reproduction step is to create a VM with 8 CPUs, 16G memory and\nsetup data=journal:\nsudo tune2fs -o journal_data /dev/vda1\nRun fio:\nrm -f fiotest\nfio --name=fiotest --rw=randwrite --bs=4k --runtime=6 --ioengine=libaio\n--iodepth=256 --numjobs=8 --filename=fiotest --filesize=30G\n--group_reporting\nReboot the VM, and check the console output from:\nvirsh console testvm\n\nBut there is no dirty inode, folio_clear_dirty_for_io clears PG_dirty\nbut leaves tags PAGECACHE_TAG_DIRTY and PAGECACHE_TAG_TOWRITE set which\nare only cleared by __folio_start_writeback.\nIn data=journal mode, jbd2 checkpoints the journalled data to its final\nlocation and clears its own dirty flag without touching folio PG_dirty\nor xarray dirty flags.\nThe commit f4a2b42e7891 (\"ext4: fix stale xarray tags after writeback\")\nfixes when PG_dirty is still set but there is no dirty page.\nAnother case is PG_dirty is cleared, but PAGECACHE_TAG_DIRTY and\nPAGECACHE_TAG_TOWRITE is still set. In this case, writeback thread\nchecks clean folio and skips it in mpage_prepare_extent_to_map:\nif (!folio_test_dirty(folio) ||\n    ...\n        folio_unlcok(folio);\n\tcontinue\n\nAnd never reaches ext4_bio_write_folio where the commit f4a2b42e7891\nclears the stale xarray tags. Print debug logs after the filesystem\nis remounted read-only:\nwritepages RDONLY nrpages=2048 dirtytag=1 wbtag=0 towrite=1 sync=0\nAnd all folios are actually clean:\nfolio idx=3 dirty=0 wb=0 checked=0 dirtybuf=0 jbddirty=0 mapped=1\n...\n\nWe need to clear the xarray stale tags for such clean folios by\ncycling them through writeback in the skip path, the same way\nf4a2b42e7891 does in ext4_bio_write_folio."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-17T16:10:15.399Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/f82a4929d0ef7ddf254c1c295ec1dfd24094f2de"
        },
        {
          "url": "https://git.kernel.org/stable/c/a450ab88bfd57b227d72c7a3faad54d16c3fc099"
        },
        {
          "url": "https://git.kernel.org/stable/c/aa0042630b1f7cab735b0a168539281198822586"
        },
        {
          "url": "https://git.kernel.org/stable/c/43ae387c3ae6a11227d096669ddf883e27a39a11"
        },
        {
          "url": "https://git.kernel.org/stable/c/ec524aae479b4b2078c47492b90ec21200bce434"
        }
      ],
      "title": "ext4: clear stale xarray tags on folios skipped during writeback",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-92502",
    "datePublished": "2026-09-17T16:10:15.399Z",
    "dateReserved": "2026-09-16T12:21:13.872Z",
    "dateUpdated": "2026-09-17T16:10:15.399Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-92502",
      "date": "2026-09-29",
      "epss": "0.00209",
      "percentile": "0.09941"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "fs/ext4/inode.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "f82a4929d0ef7ddf254c1c295ec1dfd24094f2de",
                    "status": "affected",
                    "version": "dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "a450ab88bfd57b227d72c7a3faad54d16c3fc099",
                    "status": "affected",
                    "version": "dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "aa0042630b1f7cab735b0a168539281198822586",
                    "status": "affected",
                    "version": "dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "43ae387c3ae6a11227d096669ddf883e27a39a11",
                    "status": "affected",
                    "version": "dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "ec524aae479b4b2078c47492b90ec21200bce434",
                    "status": "affected",
                    "version": "dff4ac75eeeefc4397fe7cf8ce559425bf46b1f7",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "fs/ext4/inode.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.2"
                  },
                  {
                    "lessThan": "6.2",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.6.*",
                    "status": "unaffected",
                    "version": "6.6.157",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.110",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.52",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.6",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc1",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\next4: clear stale xarray tags on folios skipped during writeback\n\nIn data=journal mode, the writeback thread can hit the\nWARN_ON_ONCE(sb_rdonly(sb)) in ext4_journal_check_start() while the\nsuperblock is being remounted read-only during reboot:\n\nWorkqueue: writeback wb_workfn (flush-253:0)\nRIP: 0010:ext4_journal_check_start+0x8b/0xd0\nCall Trace:\n  __ext4_journal_start_sb+0x3c/0x1e0\n  mpage_prepare_extent_to_map+0x4af/0x580\n  ext4_do_writepages+0x3c0/0x1080\n  ext4_writepages+0xc8/0x1a0\n  do_writepages+0xc4/0x180\n  __writeback_single_inode+0x45/0x2f0\n  writeback_sb_inodes+0x26b/0x5d0\n  __writeback_inodes_wb+0x54/0x100\n  wb_writeback+0x1ac/0x320\n  wb_workfn+0x394/0x470\n\nAnd followed by the warning:\nEXT4-fs warning (device vda1): ext4_evict_inode:195: inode #6263:\ncomm (sd-umount): data will be lost\n\nThis issue is not reproduced every time, but frequently.\nThe reproduction step is to create a VM with 8 CPUs, 16G memory and\nsetup data=journal:\nsudo tune2fs -o journal_data /dev/vda1\nRun fio:\nrm -f fiotest\nfio --name=fiotest --rw=randwrite --bs=4k --runtime=6 --ioengine=libaio\n--iodepth=256 --numjobs=8 --filename=fiotest --filesize=30G\n--group_reporting\nReboot the VM, and check the console output from:\nvirsh console testvm\n\nBut there is no dirty inode, folio_clear_dirty_for_io clears PG_dirty\nbut leaves tags PAGECACHE_TAG_DIRTY and PAGECACHE_TAG_TOWRITE set which\nare only cleared by __folio_start_writeback.\nIn data=journal mode, jbd2 checkpoints the journalled data to its final\nlocation and clears its own dirty flag without touching folio PG_dirty\nor xarray dirty flags.\nThe commit f4a2b42e7891 (\"ext4: fix stale xarray tags after writeback\")\nfixes when PG_dirty is still set but there is no dirty page.\nAnother case is PG_dirty is cleared, but PAGECACHE_TAG_DIRTY and\nPAGECACHE_TAG_TOWRITE is still set. In this case, writeback thread\nchecks clean folio and skips it in mpage_prepare_extent_to_map:\nif (!folio_test_dirty(folio) ||\n    ...\n        folio_unlcok(folio);\n\tcontinue\n\nAnd never reaches ext4_bio_write_folio where the commit f4a2b42e7891\nclears the stale xarray tags. Print debug logs after the filesystem\nis remounted read-only:\nwritepages RDONLY nrpages=2048 dirtytag=1 wbtag=0 towrite=1 sync=0\nAnd all folios are actually clean:\nfolio idx=3 dirty=0 wb=0 checked=0 dirtybuf=0 jbddirty=0 mapped=1\n...\n\nWe need to clear the xarray stale tags for such clean folios by\ncycling them through writeback in the skip path, the same way\nf4a2b42e7891 does in ext4_bio_write_folio."
          }
        ],
        "id": "CVE-2026-92502",
        "lastModified": "2026-09-17T17:17:52.680",
        "metrics": {},
        "published": "2026-09-17T17:17:52.680",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/43ae387c3ae6a11227d096669ddf883e27a39a11"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/a450ab88bfd57b227d72c7a3faad54d16c3fc099"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/aa0042630b1f7cab735b0a168539281198822586"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/ec524aae479b4b2078c47492b90ec21200bce434"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/f82a4929d0ef7ddf254c1c295ec1dfd24094f2de"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "suse_vex": {
      "aggregate_severity": "low",
      "current_release_date": "2026-09-23T16:58:43Z",
      "cve": "CVE-2026-92502",
      "id": "CVE-2026-92502",
      "initial_release_date": "2026-09-18T00:13:36Z",
      "product_status:known_affected": "108",
      "product_status:known_not_affected": "239",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-92502",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-92502.json",
      "version": "4"
    }
  }
}



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…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…