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

md: do overflow check for sb->bblog_shift in super_1_load()

In super_1_load(), sb->bblog_shift is an __u8 type value loaded from on-
disk superblock. It is used for badblocks API badblocks_set() by the
following sequence,

1930 rdev->badblocks.shift = sb->bblog_shift;
1931 for (i = 0 ; i < (sectors << (9-3)) ; i++, bbp++) {
1932 u64 bb = le64_to_cpu(*bbp);
1933 int count = bb & (0x3ff);
1934 u64 sector = bb >> 10;
1935 sector <<= sb->bblog_shift;
1936 count <<= sb->bblog_shift;
1937 if (bb + 1 == 0)
1938 break;
1939 if (!badblocks_set(&rdev->badblocks, sector, count, 1))
1940 return -EINVAL;
1941 }

bb->bblog_shit is in range of 0-255, variable sector is 64bit width, for
an invalid bb->bblog_shit, it is possible to make sector be overflowed
by the following calculation,
1935 sector <<= sb->bblog_shift;
Then in turn when call badblocks_set() at line 1939 with the invalid
rdev->badblocks.shift set at line 1930, may result an overflow inside
_badblocks_clear() in block/badblocks.c.

Although there are many places to call badblocks APIs, the non-zero
shift value is only used in super_1_load(), other places always use 0 as
the shift value. Therefore it is unnecessary to do a general shift value
overflow check inside badblock API, and just check here as the caller.

This may avoid unnecessary check, make the badblocks API code more simple
and elegant.
Published: 2026-09-11
Score: 7.8 High
EPSS: < 1% Very Low
KEV: No
Impact: Integer overflow in badblocks processing could lead to denial of service or data corruption
Action: Patch Kernel
AI Analysis

Impact

This vulnerability stems from an unchecked left shift of the sb->bblog_shift value during badblocks processing in the Linux kernel. When this 8‑bit field, read from the superblock, is larger than expected, the shift operation overflows the 64‑bit sector calculation, potentially causing badblocks_set to operate on incorrect sector ranges. The overflow can result in kernel crashes or corruption of bad block data, leading to denial of service or data loss. The weakness is an integer overflow (CWE‑190).

Affected Systems

All versions of the Linux kernel that lack the added overflow guard in super_1_load() are affected. The issue exists in all mainstream releases before the commits 35d522bd… and 3b097416… that introduced the check. Systems running these kernels on any distribution that does not yet incorporate the patch are susceptible; distributions that have applied the latest kernel update are not impacted.

Risk and Exploitability

The CVSS score of 4.4 indicates a moderate risk. The EPSS score is less than 1%, indicating a very low but nonzero probability of exploitation. The vulnerability is not listed in CISA KEV. The likely attack vector is mounting a filesystem with a deliberately corrupted bblog_shift field during filesystem initialization, which requires local access to mount the filesystem. By placing a malicious filesystem on storage that will be mounted, an attacker could induce the overflow during badblocks processing, potentially causing a crash or data corruption.

Generated by OpenCVE AI on September 12, 2026 at 20:35 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the kernel update that includes the overflow check in super_1_load().
  • Reboot the system to load the updated kernel.
  • Until the kernel can be updated, avoid mounting or using filesystems that may contain an invalid bblog_shift value, and consider disabling the badblocks scanning feature on affected filesystems.

Generated by OpenCVE AI on September 12, 2026 at 20: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:N/A:H'}

cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/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-190
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:N/A:H'}

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: do overflow check for sb->bblog_shift in super_1_load() In super_1_load(), sb->bblog_shift is an __u8 type value loaded from on- disk superblock. It is used for badblocks API badblocks_set() by the following sequence, 1930 rdev->badblocks.shift = sb->bblog_shift; 1931 for (i = 0 ; i < (sectors << (9-3)) ; i++, bbp++) { 1932 u64 bb = le64_to_cpu(*bbp); 1933 int count = bb & (0x3ff); 1934 u64 sector = bb >> 10; 1935 sector <<= sb->bblog_shift; 1936 count <<= sb->bblog_shift; 1937 if (bb + 1 == 0) 1938 break; 1939 if (!badblocks_set(&rdev->badblocks, sector, count, 1)) 1940 return -EINVAL; 1941 } bb->bblog_shit is in range of 0-255, variable sector is 64bit width, for an invalid bb->bblog_shit, it is possible to make sector be overflowed by the following calculation, 1935 sector <<= sb->bblog_shift; Then in turn when call badblocks_set() at line 1939 with the invalid rdev->badblocks.shift set at line 1930, may result an overflow inside _badblocks_clear() in block/badblocks.c. Although there are many places to call badblocks APIs, the non-zero shift value is only used in super_1_load(), other places always use 0 as the shift value. Therefore it is unnecessary to do a general shift value overflow check inside badblock API, and just check here as the caller. This may avoid unnecessary check, make the badblocks API code more simple and elegant.
Title md: do overflow check for sb->bblog_shift in super_1_load()
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:56.571Z

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

Link: CVE-2026-89557

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

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

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

Link: CVE-2026-89557

cve-icon Redhat

Severity : Moderate

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

Links: CVE-2026-89557 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-12T20:45:17Z

Weaknesses
  • CWE-190

    Integer Overflow or Wraparound