{
  "schemaVersion": 1,
  "attribution": [
    {
      "source": "CISA Known Exploited Vulnerabilities",
      "url": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog",
      "licence": "US government work"
    },
    {
      "source": "GitHub Advisory Database",
      "url": "https://github.com/advisories",
      "licence": "CC BY 4.0"
    },
    {
      "source": "Have I Been Pwned",
      "url": "https://haveibeenpwned.com/",
      "licence": "CC BY 4.0"
    },
    {
      "source": "CVE Program (CVE records)",
      "url": "https://www.cve.org/Legal/TermsOfUse",
      "licence": "CVE Terms of Use",
      "notice": "Copyright © 1999-2026, The MITRE Corporation. CVE is a trademark and the CVE logo is a registered trademark of The MITRE Corporation.",
      "terms": "CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE™). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy."
    },
    {
      "source": "FIRST EPSS",
      "url": "https://www.first.org/epss/",
      "licence": "free to use; FIRST requests attribution"
    }
  ],
  "record": {
    "id": "CVE-2026-89490",
    "sourceURL": "https://www.cve.org/CVERecord?id=CVE-2026-89490",
    "idYear": 2026,
    "status": "PUBLISHED",
    "publishedAt": "2026-09-11T19:43:42.808Z",
    "updatedAt": "2026-10-19T08:47:41.930Z",
    "importedAt": "2026-10-24T01:58:35.090Z",
    "snapshot": {
      "id": "cve_2026-10-24_midnight_baseline",
      "at": "2026-10-24T00:00:00.000Z",
      "source": "https://github.com/CVEProject/cvelistV5/releases/tag/cve_2026-10-24_0100Z"
    },
    "facts": {
      "title": "ocfs2: fix readdir position truncation on 32-bit kernels",
      "summary": "In the Linux kernel, the following vulnerability has been resolved:\n\nocfs2: fix readdir position truncation on 32-bit kernels\n\nIn ocfs2_dir_foreach_blk_el(), the directory cookie position is\nrebuilt with\n\n\tctx->pos = (ctx->pos & ~(sb->s_blocksize - 1)) | offset;\n\n`ctx->pos` is loff_t (signed 64-bit), while `sb->s_blocksize` is\nunsigned long.  On 32-bit kernels unsigned long is 32-bit, so the mask\n\n\t~(sb->s_blocksize - 1)\n\nis computed as a 32-bit unsigned value (e.g. 0xfffff000 for a 4 KiB\nblock size).  In the AND expression with the 64-bit `ctx->pos`, that\nunsigned operand is zero-extended to 64 bits per the usual arithmetic\nconversions, yielding 0x00000000fffff000.  The high 32 bits of\n`ctx->pos` are silently cleared, even though directory size is\nallowed to exceed 4 GiB.\n\nWhen readdir() crosses the 4 GiB boundary on a 32-bit kernel the\nposition is reset back into the first 4 GiB block, making the\nre-validation path re-enumerate already-returned dirents indefinitely.\n\nThis is ocfs2_dir_foreach_blk_el(), the extent-list readdir path taken\nfor all non-inline directories, so a directory large enough to cross\n4 GiB reaches it.\n\nThis is the same class of bug that commit 3dce5bb82c97 (\"exfat: Fix\nbitwise operation having different size\") fixed in exfat, and the\nfix mirrors the equivalent ext4 fix in this series.  Cast the operand\nto loff_t so the mask is 64-bit before the AND:\n\n\tctx->pos = (ctx->pos & ~((loff_t)sb->s_blocksize - 1)) | offset;\n\n64-bit kernels are unaffected.",
      "affected": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "versions": [
            {
              "version": "ccd979bdbce9fba8412beb3f1de68a9d0171b12c",
              "status": "affected",
              "versionType": "git",
              "lessThan": "c28dc3407937aa8f225942538cd585c9b28ea65a"
            },
            {
              "version": "ccd979bdbce9fba8412beb3f1de68a9d0171b12c",
              "status": "affected",
              "versionType": "git",
              "lessThan": "94569154ba49f5f85645d2019c8e206213d8404e"
            },
            {
              "version": "ccd979bdbce9fba8412beb3f1de68a9d0171b12c",
              "status": "affected",
              "versionType": "git",
              "lessThan": "1ae7029823ae4c91664cb32eec7fb8dd5e1a337a"
            },
            {
              "version": "ccd979bdbce9fba8412beb3f1de68a9d0171b12c",
              "status": "affected",
              "versionType": "git",
              "lessThan": "f9dd5cad8d09110ddff2db1fe756aae93c7552ff"
            },
            {
              "version": "ccd979bdbce9fba8412beb3f1de68a9d0171b12c",
              "status": "affected",
              "versionType": "git",
              "lessThan": "1001fb3b69a11eaa0dc7c7428f6edfa48b88997a"
            },
            {
              "version": "ccd979bdbce9fba8412beb3f1de68a9d0171b12c",
              "status": "affected",
              "versionType": "git",
              "lessThan": "c0c165487a2ea5a37ddcdab4259157b7a527129c"
            },
            {
              "version": "ccd979bdbce9fba8412beb3f1de68a9d0171b12c",
              "status": "affected",
              "versionType": "git",
              "lessThan": "b53e2b271eeb6040c2a4a78230c570dc41cdcfa4"
            },
            {
              "version": "ccd979bdbce9fba8412beb3f1de68a9d0171b12c",
              "status": "affected",
              "versionType": "git",
              "lessThan": "a63308ab426f3a3c7e33b02c150ea59054620261"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "versions": [
            {
              "version": "2.6.16",
              "status": "affected"
            },
            {
              "version": "0",
              "status": "unaffected",
              "versionType": "semver",
              "lessThan": "2.6.16"
            },
            {
              "version": "5.10.270",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "5.10.*"
            },
            {
              "version": "5.15.221",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "5.15.*"
            },
            {
              "version": "6.1.188",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.1.*"
            },
            {
              "version": "6.6.157",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.6.*"
            },
            {
              "version": "6.12.109",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.12.*"
            },
            {
              "version": "6.18.50",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "version": "7.2.4",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "7.2.*"
            },
            {
              "version": "7.3",
              "status": "unaffected",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ]
        }
      ]
    }
  }
}