Get a Demo

Let's Patch It!

Book a short call with one our specialists, we'll walk you through how Endor Patches work, and ask you a few questions about your environment (like your primary programming languages and repository management). We'll also send you an email right after you fill out the form, feel free to reply with any questions you have in advance!

CVE

CVE-2026-89495

ocfs2: bound namelen in dlm_migrate_request_handler
Back to all
CVE

CVE-2026-89495

ocfs2: bound namelen in dlm_migrate_request_handler

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

ocfs2: bound namelen in dlmmigraterequest_handler

Patch series "ocfs2/dlm: bound peer-controlled lengths in the o2dlm".

The o2dlm receive handlers trust u8 length and count fields from the wire

without bounding them, so a node in a DLM domain can corrupt or panic any

other node with a malformed message.  Three defects:

  • dlmmigraterequest_handler() passes migrate->namelen unchecked to

    dlminitmle(), which memcpy()s it into the 32-byte mname[] of an

    o2dlm_mle slab object: a heap out-of-bounds write of up to ~215

    attacker-controlled bytes.

  • dlmmiglockreshandler() passes mres->locknamelen unchecked to

    dlminitlockres(), which memcpy()s it into the 32-byte o2dlm_lockname

    slab object: a heap out-of-bounds write of up to ~223 bytes.

  • the same handler trusts mres->num_locks without checking that the

    message is large enough to hold that many entries, so

    dlmprocessrecoverydata() walks mres->ml[] past the kmalloc(datalen)

    copy and trips a BUG_ON (an out-of-bounds read ending in a panic).

The other o2dlm receive handlers already reject an oversized name; the

migration and recovery handlers have omitted it since the DLM was added

(see the Fixes tags).  Patch 1 bounds namelen; patch 2 validates

locknamelen, numlocks, and the payload size.  Conforming recovery and

migration traffic is unaffected.

o2net authenticates peers only by the DLM domain key, so any node that has

joined the domain -- including a compromised or malicious member -- can

send these messages.  There is no local trigger; the attacker must already

be a member of the cluster.

Each sink was confirmed under KASAN with an out-of-tree module mirroring

it exactly -- a kmem_cache/kmalloc of the real destination size, then the

same unclamped memcpy/loop: slab-out-of-bounds Write for the two writes,

Read for the recovery walk, and a panic.  A userspace AddressSanitizer

build faults identically under -m32 and -m64.  Scrubbed logs are available

on request.

I reported this privately to security@kernel.org and the ocfs2 maintainers

on 2026-06-20; with no response after the standard embargo period I am

posting the fix publicly.  I have no embargo requirement.

​

This patch (of 2):

A node receiving a DLMMIGRATEREQUEST message trusts the peer-supplied

name length (migrate->namelen) without bounding it.  dlminitmle() then

copies that many bytes into the fixed DLMLOCKIDNAME_MAX-byte mname[]

array of an o2dlm_mle slab object, so a malformed message from a cluster

peer overflows the slab object by up to ~215 bytes: a heap out-of-bounds

write of attacker-controlled data, reachable by any node in the domain.

Reject an oversized name, the way dlmmasterrequest_handler() and the

other o2dlm receive handlers already do; the migration handler omits the

check entirely.  Conforming messages are unaffected.

Package Versions Affected

Package Version
patch Availability
No items found.

Automatically patch vulnerabilities without upgrading

Fix Without Upgrading
Detect compatible fix
Apply safe remediation
Fix with a single pull request

CVSS Version

Severity
Base Score
CVSS Version
Score Vector
C
H
U
9.8
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
C
H
U
0
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
C
H
U
-

Related Resources

No items found.

References

https://git.kernel.org/stable/c/006c96ea488eca2ef5155ec76038e0a4dbf65f0a, https://git.kernel.org/stable/c/2487bea2098322669f0563baff53e797486b823f, https://git.kernel.org/stable/c/24989909d3413b44b104102caa6661b1e424ba0f, https://git.kernel.org/stable/c/aabc5d8388e6f8826345f0073455dbcaaaa6491d, https://git.kernel.org/stable/c/de10cd3b062a5235af754925fcf49beb5a1109d4, https://git.kernel.org/stable/c/e1288865b8ceac0dcd1009ecba43de961f13d5bd, https://git.kernel.org/stable/c/ea5b5609305a8437bc955a0834a530c12246d78f, https://git.kernel.org/stable/c/f8658ee3327f73bd81c0bcd07cdeb5a8527fac98, https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/89xxx/CVE-2026-89495.json, https://nvd.nist.gov/vuln/detail/CVE-2026-89495, https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Severity

9.8

CVSS Score
0
10

Basic Information

Base CVSS
9.8
EPSS Probability
0.00714%
EPSS Percentile
0.52231%
Introduced Version
6714d8e86bf443f6f7af50f9d432025649f091f5,2.6.16,5.11.0,5.16.0,6.2.0,6.7.0,6.13.0,6.19.0,0
Fix Available
ea5b5609305a8437bc955a0834a530c12246d78f,5.10.270,5.15.221,6.1.188,6.6.157,6.12.109,6.18.50,7.2.4,6.12.111-1~deb12u1,6.12.111-1,0:6.12.0-207.111.5.1.el10uek,0:6.12.0-207.111.5.1.el9uek

Fix Critical Vulnerabilities Instantly

Secure your app without upgrading.
Fix Without Upgrading