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.
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"
}
]
}