KernelScan.io

HIGH Introduced in 6.10

erofs GlobalBuffer OOB

CVE-2026-89602

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

KernelScan AI7.0HIGH

01

In the Linux kernel, the following vulnerability has been resolved: erofs: skip sufficiently large global buffers when resizing z_erofs_gbuf_nrpages is advanced only after every global buffer has been grown. If a resize fails after some buffers were enlarged, a retry revisits those enlarged buffers. Retrying the same size then returns -ENOMEM because alloc_pages_bulk() has no pages to add and the unchanged return value is treated as a failure. Retrying an intermediate size allocates a temporary pointer array smaller than gbuf->nrpages and copies more existing pointers than the array can hold. Skip buffers that already satisfy the request. Once all remaining buffers have caught up, advancing z_erofs_gbuf_nrpages again describes the guaranteed minimum size across the pool.

02

Engine v0.6.0

Risk summary

A local attacker who can trigger erofs global buffer resizing can cause an out-of-bounds write by exploiting a retry path that copies more existing page pointers than a newly allocated temporary array can hold. This can lead to kernel memory corruption, potentially allowing privilege escalation or a system crash.

Affectedfs/erofs/zutil.c (erofs filesystem)

Vulnerability analysis

The erofs filesystem uses shared internal buffers for decompression that can grow on demand. If a growth operation runs out of memory partway through, some buffers end up larger than others. A later retry with a smaller target allocates a new buffer sized for the smaller target, then copies all existing pointers from the already-enlarged buffer into it, overflowing the allocation. The corrected code now skips any buffer that is already big enough, so retries only touch buffers that still need to grow. Any local user who can read compressed data from a mounted erofs filesystem can trigger this growth path.

03

BranchIntroducedFixed inPatch commit
6.126.106.12.1113fbdd15d5830
6.186.106.18.517267557ce98c
7.26.107.2.47f4a89d4f0d6
mainline6.107.3a7d097cf0130
cip/6.126.106.12.111-cip323fbdd15d5830

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32