CVE-2026-90204 (GCVE-0-2026-90204)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:07 – Updated: 2026-09-18 17:53
VLAI
Title
ocfs2: validate DIO orphan slot during inode read
Summary
In the Linux kernel, the following vulnerability has been resolved: ocfs2: validate DIO orphan slot during inode read [BUG] A corrupted append-DIO dinode (high byte at offset 0xa1 corrupted from 0 to 1) can carry an i_dio_orphaned_slot outside the mounted filesystem slot range and trigger a use-after-free error: BUG: KASAN: slab-use-after-free in ocfs2_get_system_file_inode+0x780/0x820 fs/ocfs2/sysfile.c:102 Read of size 8 at addr ffff88800b767c00 by task kworker/u8:3/85 Call Trace: ... ocfs2_get_system_file_inode+0x780/0x820 fs/ocfs2/sysfile.c:102 ocfs2_wipe_inode+0x292/0xf70 fs/ocfs2/inode.c:840 ocfs2_delete_inode fs/ocfs2/inode.c:1155 [inline] ocfs2_evict_inode+0x6c9/0x1170 fs/ocfs2/inode.c:1295 evict+0x38e/0x8f0 fs/inode.c:810 iput_final fs/inode.c:1914 [inline] iput fs/inode.c:1966 [inline] iput+0x55b/0x8b0 fs/inode.c:1926 ocfs2_recover_orphans+0x610/0xe40 fs/ocfs2/journal.c:2374 ocfs2_complete_recovery+0x5af/0xd00 fs/ocfs2/journal.c:1373 ... [CAUSE] ocfs2_del_inode_from_orphan() uses i_dio_orphaned_slot to index the slot-local system inode cache. The dinode validator does not check this active slot, so an out-of-range value produces an invalid cache entry pointer that is dereferenced as an inode pointer. [FIX] Reject an active i_dio_orphaned_slot outside the slot range during dinode validation, before DIO orphan recovery can consume it.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 06ee5c75b57564435933fc0ffa72dc18a2fda0e7 , < e35fa6eb4d2a39f8049f62361a4b44930882b5f8 (git)
Affected: 06ee5c75b57564435933fc0ffa72dc18a2fda0e7 , < 418e0ae42fa769d354b15e62c01a00413024755b (git)
Affected: 06ee5c75b57564435933fc0ffa72dc18a2fda0e7 , < bb88131c9831075b8dc08cdd375743e5d44c7ca2 (git)
guessed Create a notification for this product.
Linux Linux Affected: 4.0
Unaffected: 0 , < 4.0 (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/ocfs2/inode.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "e35fa6eb4d2a39f8049f62361a4b44930882b5f8",
              "status": "affected",
              "version": "06ee5c75b57564435933fc0ffa72dc18a2fda0e7",
              "versionType": "git"
            },
            {
              "lessThan": "418e0ae42fa769d354b15e62c01a00413024755b",
              "status": "affected",
              "version": "06ee5c75b57564435933fc0ffa72dc18a2fda0e7",
              "versionType": "git"
            },
            {
              "lessThan": "bb88131c9831075b8dc08cdd375743e5d44c7ca2",
              "status": "affected",
              "version": "06ee5c75b57564435933fc0ffa72dc18a2fda0e7",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/ocfs2/inode.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.0"
            },
            {
              "lessThan": "4.0",
              "status": "unaffected",
              "version": "0",
              "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.18.52",
                  "versionStartIncluding": "4.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "4.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "4.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nocfs2: validate DIO orphan slot during inode read\n\n[BUG]\nA corrupted append-DIO dinode (high byte at offset 0xa1\ncorrupted from 0 to 1) can carry an i_dio_orphaned_slot\noutside the mounted filesystem slot range and trigger a\nuse-after-free error:\n\nBUG: KASAN: slab-use-after-free in ocfs2_get_system_file_inode+0x780/0x820 fs/ocfs2/sysfile.c:102\nRead of size 8 at addr ffff88800b767c00 by task kworker/u8:3/85\nCall Trace:\n ...\n ocfs2_get_system_file_inode+0x780/0x820 fs/ocfs2/sysfile.c:102\n ocfs2_wipe_inode+0x292/0xf70 fs/ocfs2/inode.c:840\n ocfs2_delete_inode fs/ocfs2/inode.c:1155 [inline]\n ocfs2_evict_inode+0x6c9/0x1170 fs/ocfs2/inode.c:1295\n evict+0x38e/0x8f0 fs/inode.c:810\n iput_final fs/inode.c:1914 [inline]\n iput fs/inode.c:1966 [inline]\n iput+0x55b/0x8b0 fs/inode.c:1926\n ocfs2_recover_orphans+0x610/0xe40 fs/ocfs2/journal.c:2374\n ocfs2_complete_recovery+0x5af/0xd00 fs/ocfs2/journal.c:1373\n ...\n\n[CAUSE]\nocfs2_del_inode_from_orphan() uses i_dio_orphaned_slot to index the\nslot-local system inode cache. The dinode validator does not check\nthis active slot, so an out-of-range value produces an invalid cache\nentry pointer that is dereferenced as an inode pointer.\n\n[FIX]\nReject an active i_dio_orphaned_slot outside the slot range during\ndinode validation, before DIO orphan recovery can consume it."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The bad i_dio_orphaned_slot is an on-disk ocfs2_dinode field (offset 0xa0) consumed by ocfs2_del_inode_from_orphan() after ocfs2_validate_inode_block() along ocfs2_fill_super\u2192ocfs2_complete_mount_recovery\u2192ocfs2_recover_orphans (or ocfs2_add_inode_to_orphan on append DIO). No network protocol carries this slot.\nAC:L - A dinode with OCFS2_DIO_ORPHANED_FL and i_dio_orphaned_slot \u003e= osb-\u003emax_slots (the reported 0xa1 0\u21921 flip yields slot 256) makes get_local_system_inode() index slot*NUM_LOCAL_SYSTEM_INODES past the kzalloc(max_slots*NUM_LOCAL_SYSTEM_INODES) cache and igrab the out-of-range pointer with no race.\nPR:N - ocfs2_fs_type lacks FS_USERNS_MOUNT, so mount_capable() requires init-namespace CAP_SYS_ADMIN. The higher-severity case is a crafted loop/LUN image whose recovery runs when an administrator mounts it, so the attacker needs no account or capability on the victim.\nUI:R - The attacker-supplied ocfs2 image must be mounted via ocfs2_fill_super so ocfs2_complete_mount_recovery() can walk DIO orphan dirents and call ocfs2_del_inode_from_orphan() on the forged i_dio_orphaned_slot. That mount is the required victim action.\nS:U - igrab() of the out-of-range local_system_inodes[] pointer and later ocfs2_inode_lock() stay inside the kernel that mounted the volume; this is not a KVM/Xen guest-to-host escape or IOMMU/DMA bypass.\nC:H - get_local_system_inode() reads an 8-byte inode pointer past the slot-local cache, then igrab() and ocfs2_inode_lock() treat it as a live inode. KASAN reported slab-use-after-free in ocfs2_get_system_file_inode(); a UAF inode object yields an arbitrary kernel read.\nI:H - After igrab() on the OOB/UAF pointer, ocfs2_del_inode_from_orphan() takes inode_lock and ocfs2_inode_lock on that object and journals orphan-dir mutations through it, which is a type-confused write/control-flow primitive on a freed or adjacent heap object.\nA:H - igrab() on a garbage or I_FREEING pointer hits BUG_ON(!inode) in ocfs2_get_system_file_inode() or the KASAN UAF oops shown on the ocfs2_recover_orphans mount-recovery path, which is a kernel crash."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-18T17:53:42.767Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/e35fa6eb4d2a39f8049f62361a4b44930882b5f8"
        },
        {
          "url": "https://git.kernel.org/stable/c/418e0ae42fa769d354b15e62c01a00413024755b"
        },
        {
          "url": "https://git.kernel.org/stable/c/bb88131c9831075b8dc08cdd375743e5d44c7ca2"
        }
      ],
      "title": "ocfs2: validate DIO orphan slot during inode read",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-90204",
    "datePublished": "2026-09-17T16:07:20.845Z",
    "dateReserved": "2026-09-11T19:38:34.792Z",
    "dateUpdated": "2026-09-18T17:53:42.767Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-90204",
      "date": "2026-09-29",
      "epss": "0.00179",
      "percentile": "0.06698"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-23T02:20:39.000Z",
      "cve": "CVE-2026-90204",
      "id": "msrc_CVE-2026-90204",
      "initial_release_date": "2026-09-19T01:19:17.000Z",
      "product_status:known_affected": "2",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "ocfs2: validate DIO orphan slot during inode read",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-90204.json",
      "version": "2"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "fs/ocfs2/inode.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "e35fa6eb4d2a39f8049f62361a4b44930882b5f8",
                    "status": "affected",
                    "version": "06ee5c75b57564435933fc0ffa72dc18a2fda0e7",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "418e0ae42fa769d354b15e62c01a00413024755b",
                    "status": "affected",
                    "version": "06ee5c75b57564435933fc0ffa72dc18a2fda0e7",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "bb88131c9831075b8dc08cdd375743e5d44c7ca2",
                    "status": "affected",
                    "version": "06ee5c75b57564435933fc0ffa72dc18a2fda0e7",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "fs/ocfs2/inode.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "4.0"
                  },
                  {
                    "lessThan": "4.0",
                    "status": "unaffected",
                    "version": "0",
                    "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\nocfs2: validate DIO orphan slot during inode read\n\n[BUG]\nA corrupted append-DIO dinode (high byte at offset 0xa1\ncorrupted from 0 to 1) can carry an i_dio_orphaned_slot\noutside the mounted filesystem slot range and trigger a\nuse-after-free error:\n\nBUG: KASAN: slab-use-after-free in ocfs2_get_system_file_inode+0x780/0x820 fs/ocfs2/sysfile.c:102\nRead of size 8 at addr ffff88800b767c00 by task kworker/u8:3/85\nCall Trace:\n ...\n ocfs2_get_system_file_inode+0x780/0x820 fs/ocfs2/sysfile.c:102\n ocfs2_wipe_inode+0x292/0xf70 fs/ocfs2/inode.c:840\n ocfs2_delete_inode fs/ocfs2/inode.c:1155 [inline]\n ocfs2_evict_inode+0x6c9/0x1170 fs/ocfs2/inode.c:1295\n evict+0x38e/0x8f0 fs/inode.c:810\n iput_final fs/inode.c:1914 [inline]\n iput fs/inode.c:1966 [inline]\n iput+0x55b/0x8b0 fs/inode.c:1926\n ocfs2_recover_orphans+0x610/0xe40 fs/ocfs2/journal.c:2374\n ocfs2_complete_recovery+0x5af/0xd00 fs/ocfs2/journal.c:1373\n ...\n\n[CAUSE]\nocfs2_del_inode_from_orphan() uses i_dio_orphaned_slot to index the\nslot-local system inode cache. The dinode validator does not check\nthis active slot, so an out-of-range value produces an invalid cache\nentry pointer that is dereferenced as an inode pointer.\n\n[FIX]\nReject an active i_dio_orphaned_slot outside the slot range during\ndinode validation, before DIO orphan recovery can consume it."
          }
        ],
        "id": "CVE-2026-90204",
        "lastModified": "2026-09-18T18:17:46.287",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "REQUIRED",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-17T17:17:15.460",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/418e0ae42fa769d354b15e62c01a00413024755b"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/bb88131c9831075b8dc08cdd375743e5d44c7ca2"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/e35fa6eb4d2a39f8049f62361a4b44930882b5f8"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-22T16:29:54Z",
      "cve": "CVE-2026-90204",
      "id": "CVE-2026-90204",
      "initial_release_date": "2026-09-22T16:29:54Z",
      "product_status:known_affected": "343",
      "product_status:known_not_affected": "4",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-90204",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-90204.json",
      "version": "2"
    }
  }
}



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…