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

md/raid5: fix soft lockup in retry_aligned_read()

When retry_aligned_read() encounters an overlapped stripe, it releases
the stripe via raid5_release_stripe() which puts it on the lockless
released_stripes llist. In the next raid5d loop iteration,
release_stripe_list() drains the stripe onto handle_list (since
STRIPE_HANDLE is set by the original IO), but retry_aligned_read()
runs before handle_active_stripes() and removes the stripe from
handle_list via find_get_stripe() -> list_del_init(). This prevents
handle_stripe() from ever processing the stripe to resolve the
overlap, causing an infinite loop and soft lockup.

Fix this by using __release_stripe() with temp_inactive_list instead
of raid5_release_stripe() in the failure path, so the stripe does not
go through the released_stripes llist. This allows raid5d to break out
of its loop, and the overlap will be resolved when the stripe is
eventually processed by handle_stripe().
Published: 2026-05-27
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

In the Linux kernel’s RAID5 driver, the function retry_aligned_read() contains a logic error that allows a stripe to be prematurely removed from the active list, causing an infinite processing loop that results in a soft lockup. This effect can temporarily halt a CPU, but it does not compromise data integrity or grant privilege escalation. The likely attack vector involves local interaction with a RAID5 array: by provoking a read request on an overlapped stripe, an attacker could trigger the loop and induce the lockup.

Affected Systems

It is inferred that all systems that run a Linux kernel containing the unpatched retry_aligned_read() logic are potentially affected, regardless of distribution or kernel release track, because the commit date is not tied to a specific kernel version range. Therefore any kernel build that includes the original code is vulnerable.

Risk and Exploitability

The CVSS score is not provided and EPSS information is not available. The vulnerability is not listed in CISA’s KEV catalogue. Exploitation requires local access to a system configured to use RAID5; an attacker could trigger the infinite loop by initiating a read on an overlapped stripe, thereby causing a persistent soft lockup. Given the lack of a remote trigger and the need for continuous I/O activity, the exploitation risk is moderate but could be high for critical services running on the affected node.

Generated by OpenCVE AI on May 27, 2026 at 21:27 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the kernel to a version that includes commit 09880592f5a9dc73377d6eb5ac123537b5f8df49, which implements the fix in retry_aligned_read()
  • If an immediate kernel update is not possible, isolate the RAID5 arrays and restrict direct I/O access to trusted administrators
  • Monitor dmesg and kernel logs for persistent "soft lockup" messages and schedule a kernel reboot if lockups recur

Generated by OpenCVE AI on May 27, 2026 at 21:27 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 27 May 2026 21:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-666

Wed, 27 May 2026 14:15:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: md/raid5: fix soft lockup in retry_aligned_read() When retry_aligned_read() encounters an overlapped stripe, it releases the stripe via raid5_release_stripe() which puts it on the lockless released_stripes llist. In the next raid5d loop iteration, release_stripe_list() drains the stripe onto handle_list (since STRIPE_HANDLE is set by the original IO), but retry_aligned_read() runs before handle_active_stripes() and removes the stripe from handle_list via find_get_stripe() -> list_del_init(). This prevents handle_stripe() from ever processing the stripe to resolve the overlap, causing an infinite loop and soft lockup. Fix this by using __release_stripe() with temp_inactive_list instead of raid5_release_stripe() in the failure path, so the stripe does not go through the released_stripes llist. This allows raid5d to break out of its loop, and the overlap will be resolved when the stripe is eventually processed by handle_stripe().
Title md/raid5: fix soft lockup in retry_aligned_read()
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-05-27T12:57:09.274Z

Reserved: 2026-05-13T15:03:33.094Z

Link: CVE-2026-46051

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-05-27T14:17:24.693

Modified: 2026-05-27T14:48:03.013

Link: CVE-2026-46051

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-27T23:30:45Z

Weaknesses