Description
In the Linux kernel, the following vulnerability has been resolved:

md/raid10: fix still_degraded being inverted in raid10_sync_request()

Commit fe6a19d40ceb ("md/md-bitmap: merge md_bitmap_start_sync() into
bitmap_operations") converted still_degraded from int to bool, but
inverted the assignment in the loop that checks whether the array will
still be degraded after the current device is recovered:
"still_degraded = 1" became "still_degraded = false".

As a result, recovering a device while another mirror is still missing
calls md_bitmap_start_sync() with degraded == false, which clears bitmap
bits that the still-missing device needs. When that device is re-added,
its bitmap-based recovery finds the bits already cleared and skips every
region written while the array was degraded, so it is marked In_sync
while holding stale data: silent corruption.

Reproducer (raid10 near=2, 4 disks, internal bitmap):
- fail and remove one disk of each mirror pair
- write to the degraded array
- re-add both disks and let recovery finish
- "check" reports mismatch_cnt=262272 after 256 MiB of degraded
writes and file contents differ; the second disk's "recovery"
completes in milliseconds because everything is skipped

The same conversion in raid1 got it right (still_degraded = true).
Restore the correct value.
Published: 2026-09-11
Score: 9.8 Critical
EPSS: < 1% Very Low
KEV: No
Impact: Silent data corruption in RAID10 arrays
Action: Apply Patch
AI Analysis

Impact

The vulnerability originates from an incorrect boolean assignment in the RAID10 sync process. During a disk recovery, the flag that indicates whether an array will remain degraded is inverted, causing bitmap bits that should. When a previously missing disk is later re‑added, its recovery skips all regions written while the array was degraded, leaving stale or corrupt data written to the array. The primary impact is a breach of data integrity; the flaw does not provide remote code execution, denial of service, or any other external impact.

Affected Systems

All Linux kernel versions released before the kernel commit (fe6a19d40ceb) that fixed the inverted assignment are affected. This includes every distribution’s default kernel that contains the buggy RAID10 code. Because the affected code resides in the core md RAID subsystem, any system using the Linux kernel for RAID10 with an internal bitmap is at risk, regardless of distribution.

Risk and Exploitability

The CVSS score of 4.4 indicates a moderate risk level. The EPSS score is less than 1%, indicating a very low likelihood of exploitation, and the vulnerability is not listed in the CISA KEV catalog. The likely attack vector is local; an attacker would need the ability to remove and later re‑add a disk from a mirrored RAID10 array while the array is in a degraded state. This typically requires physical access, elevated privileges, or a failure scenario that triggers disk removal. Because the vulnerability exploits a filesystem state change rather than a code path that can be invoked over a network, remote exploitation is unlikely without additional privileged access.

Generated by OpenCVE AI on September 13, 2026 at 06:35 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a version that includes commit fe6a19d40ceb, which restores the correct value for the still_degraded flag and prevents bitmap corruption
  • If a kernel upgrade cannot be performed immediately, avoid writing to degraded RAID10 arrays and allow the array to complete a full resynchronization before performing additional writes
  • After recovery, run consistency checks such as fsck or the kernel’s mdadm --detail --scan --verbose to verify that all data blocks have been correctly restored and that no stale data remain

Generated by OpenCVE AI on September 13, 2026 at 06:35 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 13 Sep 2026 06:45:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 4.4, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:N'}

cvssV3_1

{'score': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'}


Sat, 12 Sep 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-480
References
Metrics threat_severity

None

cvssV3_1

{'score': 4.4, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:N'}

threat_severity

Moderate


Fri, 11 Sep 2026 23:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: md/raid10: fix still_degraded being inverted in raid10_sync_request() Commit fe6a19d40ceb ("md/md-bitmap: merge md_bitmap_start_sync() into bitmap_operations") converted still_degraded from int to bool, but inverted the assignment in the loop that checks whether the array will still be degraded after the current device is recovered: "still_degraded = 1" became "still_degraded = false". As a result, recovering a device while another mirror is still missing calls md_bitmap_start_sync() with degraded == false, which clears bitmap bits that the still-missing device needs. When that device is re-added, its bitmap-based recovery finds the bits already cleared and skips every region written while the array was degraded, so it is marked In_sync while holding stale data: silent corruption. Reproducer (raid10 near=2, 4 disks, internal bitmap): - fail and remove one disk of each mirror pair - write to the degraded array - re-add both disks and let recovery finish - "check" reports mismatch_cnt=262272 after 256 MiB of degraded writes and file contents differ; the second disk's "recovery" completes in milliseconds because everything is skipped The same conversion in raid1 got it right (still_degraded = true). Restore the correct value.
Title md/raid10: fix still_degraded being inverted in raid10_sync_request()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-13T06:30:57.786Z

Reserved: 2026-09-11T19:38:34.724Z

Link: CVE-2026-89558

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-11T20:19:39.540

Modified: 2026-09-13T07:17:21.907

Link: CVE-2026-89558

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-09-11T19:44:30Z

Links: CVE-2026-89558 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-13T06:45:18Z

Weaknesses
  • CWE-480

    Use of Incorrect Operator