CVE-2026-45984

Analyzed
Published: 27 May 2026, 12:18
Last modified:15 Jul 2026, 00:51

Vulnerability Summary

Overall Risk (default)
medium
31/100
CVSS Score
7.8 HIGH
v3.1 (cve.org)
EPSS Score
0.31% LOW
0% probability 0.00%
KEV
Not listed
Ransomware
No reports
Public exploits
None found
Dark Web
Not detected

Timeline

27 May 2026, 12:18
Published
Vulnerability first disclosed
15 Jul 2026, 00:51
Last Modified
Vulnerability information updated

Description

In the Linux kernel, the following vulnerability has been resolved: gfs2: Fix use-after-free in iomap inline data write path The inline data buffer head (dibh) is being released prematurely in gfs2_iomap_begin() via release_metapath() while iomap->inline_data still points to dibh->b_data. This causes a use-after-free when iomap_write_end_inline() later attempts to write to the inline data area. The bug sequence: 1. gfs2_iomap_begin() calls gfs2_meta_inode_buffer() to read inode metadata into dibh 2. Sets iomap->inline_data = dibh->b_data + sizeof(struct gfs2_dinode) 3. Calls release_metapath() which calls brelse(dibh), dropping refcount to 0 4. kswapd reclaims the page (~39ms later in the syzbot report) 5. iomap_write_end_inline() tries to memcpy() to iomap->inline_data 6. KASAN detects use-after-free write to freed memory Fix by storing dibh in iomap->private and incrementing its refcount with get_bh() in gfs2_iomap_begin(). The buffer is then properly released in gfs2_iomap_end() after the inline write completes, ensuring the page stays alive for the entire iomap operation. Note: A C reproducer is not available for this issue. The fix is based on analysis of the KASAN report and code review showing the buffer head is freed before use. [agruenba: Take buffer head reference in gfs2_iomap_begin() to avoid leaks in gfs2_iomap_get() and gfs2_iomap_alloc().]

CVSS Metrics

  • v3.1HIGHScore: 7.8CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

EPSS Trends

Current EPSS score: 0.31% Percentile: 23%

Techniques & Countermeasures

  • CWE-416Use After Free

    The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory "belongs" to the code that operates on the new pointer.

  • CWE-826Premature Release of Resource During Expected Lifetime

    The product releases a resource that is still intended to be used by itself or another actor.

Affected Systems

  • linuxlinux

    ≥ d0a22a4b03b8475b7aa3fa41243c26c291407844, < 1403989d1b502f4a2c0d0b42ccf1c25748442eff | ≥ d0a22a4b03b8475b7aa3fa41243c26c291407844, < 1cae1bafdf9caa9b462b19af06b1a06902e4e142 | ≥ d0a22a4b03b8475b7aa3fa41243c26c291407844, < 764c3c84b5683e608f43735c803a5f415046686c | ≥ d0a22a4b03b8475b7aa3fa41243c26c291407844, < d87268326b277af3665237ac76a73dd9fa8e21b4 | ≥ d0a22a4b03b8475b7aa3fa41243c26c291407844, < 87d4954b5c59735a99ea98cb208d47130f6dce7d | ≥ d0a22a4b03b8475b7aa3fa41243c26c291407844, < 6d76febba07c40bcf358f63216d36ea68cf1c215 | ≥ d0a22a4b03b8475b7aa3fa41243c26c291407844, < 815ddd27c0c7171a99fe802fdb19098ddef8b19d | ≥ d0a22a4b03b8475b7aa3fa41243c26c291407844, < faddeb848305e79db89ee0479bb0e33380656321 | 5.2

  • linuxlinux kernel

    ≥ 5.2, < 5.10.252 | ≥ 5.11, < 5.15.202 | ≥ 5.16, < 6.1.165 | ≥ 6.2, < 6.6.128 | ≥ 6.7, < 6.12.75 | ≥ 6.13, < 6.18.14 | ≥ 6.19, < 6.19.4

References (17)