← Back to CVE Explorer

CVE-2026-90277

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: md/md-llbitmap: prevent create failure bitmap UAF llbitmap_create() publishes mddev->bitmap before reading the bitmap superblock. This is needed because llbitmap_read_sb() can initialize a new bitmap and flush it through helpers that use mddev->bitmap. If llbitmap_read_sb() fails, the old cleanup dropped bitmap_info.mutex and freed llbitmap before clearing mddev->bitmap. Readers such as /proc/mdstat rely on bitmap_info.mutex to keep the bitmap pointer stable while collecting bitmap stats, so they could observe the stale pointer after the failed create path released the mutex. Clear mddev->bitmap while still holding bitmap_info.mutex, then free the failed llbitmap after dropping the mutex. This makes mutex-protected readers see either a live bitmap or no bitmap.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-09-17 17:17:24.353000
Last modified
2026-10-19 09:19:21.257000
View original CVE JSON
{
  "id": "CVE-2026-90277",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-09-17T17:17:24.353",
  "lastModified": "2026-10-19T09:19:21.257",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmd/md-llbitmap: prevent create failure bitmap UAF\n\nllbitmap_create() publishes mddev->bitmap before reading the bitmap\nsuperblock. This is needed because llbitmap_read_sb() can initialize a\nnew bitmap and flush it through helpers that use mddev->bitmap.\n\nIf llbitmap_read_sb() fails, the old cleanup dropped bitmap_info.mutex\nand freed llbitmap before clearing mddev->bitmap. Readers such as\n/proc/mdstat rely on bitmap_info.mutex to keep the bitmap pointer stable\nwhile collecting bitmap stats, so they could observe the stale pointer\nafter the failed create path released the mutex.\n\nClear mddev->bitmap while still holding bitmap_info.mutex, then free the\nfailed llbitmap after dropping the mutex. This makes mutex-protected\nreaders see either a live bitmap or no bitmap."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "drivers/md/md-llbitmap.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "5ab829f1971dc99f2aac10846c378e67fc875abc",
              "lessThan": "930cc4f1af5a1afcd545a6ba00e38921ff8401e0",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "5ab829f1971dc99f2aac10846c378e67fc875abc",
              "lessThan": "2f0722435ce3a844dbb66b9bb0a18229dcc8739c",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "5ab829f1971dc99f2aac10846c378e67fc875abc",
              "lessThan": "2116c2f0a0e547615886900e2ed8c529c016499b",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "drivers/md/md-llbitmap.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "6.18",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "6.18",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.52",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.6",
              "lessThanOrEqual": "7.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.3",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/2116c2f0a0e547615886900e2ed8c529c016499b",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/2f0722435ce3a844dbb66b9bb0a18229dcc8739c",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/930cc4f1af5a1afcd545a6ba00e38921ff8401e0",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}