CVE-2026-74348

Source
https://cve.org/CVERecord?id=CVE-2026-74348
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74348.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-74348
Downstream
Published
2026-08-15T05:58:35.977Z
Modified
2026-08-16T03:48:49.636470019Z
Summary
ocfs2/dlm: require a ref for locking_state debugfs open
Details

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

ocfs2/dlm: require a ref for locking_state debugfs open

debuglockresopen() copies inode->iprivate into struct debuglockres and debuglockresrelease() later drops that pointer with dlmput(). That only works if open successfully pins the struct dlmctxt.

Today open calls dlmgrab(dlm) but ignores its return value. Once the last domain unregister has removed the context from dlmdomains, dlmgrab() returns NULL, yet open still stores the raw pointer and returns success. The later release path is outside the debugfs removal barrier, so it can call dlmput() after dlmfreectxtmem() has freed the context. KASAN reports this as a slab-use-after-free in dlmput() called from debuglockresrelease().

Fail the open when dlmgrab() cannot acquire the reference and unwind the seqfile private state before returning. That keeps lockingstate from handing out a file descriptor whose release path does not own the dlmctxt.

The buggy scenario involves two paths, with each column showing the order within that path:

lockingstate debugfs open: last domain unregister: 1. debuglockresopen() reads 1. dlmunregisterdomain() calls inode->iprivate. dlmcompletedlmshutdown(). 2. debuglockresopen() calls 2. shutdown removes the dlmctxt from dlmgrab(dlm) and gets NULL. dlmdomains. 3. open still stores the raw dlm 3. final teardown reaches pointer in dl->dlctxt and dlmfreectxtmem() and frees it. returns success. 4. debuglockresrelease() later calls dlmput(dl->dlctxt).

Validation reproduced this kernel report: KASAN slab-use-after-free in dlmput+0x82/0x200 RIP: 0033:0x7f4d349bc9e0 The buggy address belongs to the object at ffff888103a3c000 which belongs to the cache kmalloc-2k of size 2048 The buggy address is located 816 bytes inside of freed 2048-byte region [ffff888103a3c000, ffff888103a3c800) Write of size 4 Call trace: dumpstacklvl+0x66/0xa0 (?:?) printreport+0xd0/0x630 (?:?) dlmput+0x82/0x200 (?:?) srsoaliasreturnthunk+0x5/0xfbef5 (?:?) __virtaddrvalid+0x188/0x2f0 (?:?) kasanreport+0xe4/0x120 (?:?) kasancheckrange+0x105/0x1b0 (?:?) debuglockresrelease+0x53/0x80 (fs/ocfs2/dlm/dlmdebug.c:587) dlmput+0x9/0x200 (?:?) debuglockresrelease+0x5c/0x80 (fs/ocfs2/dlm/dlmdebug.c:587) fullproxyrelease+0x67/0x90 (?:?) __fput+0x1df/0x4b0 (?:?) dorawspinlock+0x10f/0x1b0 (?:?) fputclose_sync+0xd2/0x170 (?:?) __x64sysclose+0x55/0x90 (?:?) dosyscall64+0x10c/0x640 (arch/x86/entry/syscall64.c:87) irqentryexit+0xac/0x6e0 (?:?) entrySYSCALL64afterhwframe+0x77/0x7f (?:?) Freed by task stack: kasansavestack+0x33/0x60 (?:?) kasansavetrack+0x14/0x30 (?:?) kasansavefree_info+0x3b/0x60 (?:?) _kasanslabfree+0x5f/0x80 (?:?) kfree+0x30f/0x580 (?:?) dlmput+0x1ce/0x200 (?:?) dlmunregisterdomain+0xf6/0xb30 (?:?) o2cbclusterdisconnect+0x6b/0x90 (?:?) ocfs2clusterdisconnect+0x41/0x70 (?:?) ocfs2dlmshutdown+0x1c4/0x220 (?:?) ocfs2dismountvolume+0x38a/0x550 (?:?) genericshutdownsuper+0xc3/0x220 (?:?) killblocksuper+0x29/0x60 (?:?) deactivatelockedsuper+0x66/0xe0 (?:?) cleanupmnt+0x13d/0x210 (?:?) taskworkrun+0xfa/0x170 (?:?) exittousermodeloop+0xd6/0x430 (?:?) dosyscall64+0x3cb/0x640 (arch/x86/entry/syscall64.c:87) entrySYSCALL64afterhwframe+0x77/0x7f (?:?)

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/74xxx/CVE-2026-74348.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
4e3d24ed1a1285fe3289653aacc965642706bacb
Fixed
6cc93dea4078cbcddee63fa2234e382a76600464
Fixed
90a6512425414098a63fc97b77bed089c75d106b
Fixed
5bee5d5f67aedd26d2b72e00e49dd93331fbcc30
Fixed
aa7883b6a3c76301a3299deb34de948e73bb6a08
Fixed
9c81c1a61a52b6ecf0d14f1dbd95f154a7a9e92a
Fixed
a087b2d3411e7f9df71ba3293596923ee2c70d65
Fixed
a09831214912a1f270663d935613910fafd8d883
Fixed
03ad858ce8064861ea580021976dc19b7aabb549

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74348.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
2.6.26
Fixed
5.10.261
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.212
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.178
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.145
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.97
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.40
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.1.5

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74348.json"