CVE-2026-52990

CVE-2026-52990

Medium · published June 24, 2026

CVSS v3.1
5.5
EPSS
0%
Percentile
2.2
In the wild
Unconfirmed
What it is

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

fsnotify: fix inode reference leak in fsnotify_recalc_mask()

fsnotify_recalc_mask() fails to handle the return value of

__fsnotify_recalc_mask(), which may return an inode pointer that needs

to be released via fsnotify_drop_object() when the connector's HAS_IREF

flag transitions from set to cleared.

This manifests as a hung task with the following call trace:

INFO: task umount:1234 blocked for more than 120 seconds.

Call Trace:

__schedule

schedule

fsnotify_sb_delete

generic_shutdown_super

kill_anon_super

cleanup_mnt

task_work_run

do_exit

do_group_exit

The race window that triggers the iref leak:

Thread A (adding mark) Thread B (removing mark)

────────────────────── ────────────────────────

fsnotify_add_mark_locked():

fsnotify_add_mark_list():

spin_lock(conn->lock)

add mark_B(evictable) to list

spin_unlock(conn->lock)

return

/* ---- gap: no lock held ---- */

fsnotify_detach_mark(mark_A):

spin_lock(mark_A->lock)

clear ATTACHED flag on mark_A

spin_unlock(mark_A->lock)

fsnotify_put_mark(mark_A)

fsnotify_recalc_mask():

spin_lock(conn->lock)

__fsnotify_recalc_mask():

/* mark_A skipped: ATTACHED cleared */

/* only mark_B(evictable) remains */

want_iref = false

has_iref = true /* not yet cleared */

-> HAS_IREF transitions true -> false

-> returns inode pointer

spin_unlock(conn->lock)

/* BUG: return value discarded!

* iput() and fsnotify_put_sb_watched_objects()

* are never called */

Fix this by deferring the transition true -> false of HAS_IREF flag from

fsnotify_recalc_mask() (Thread A) to fsnotify_put_mark() (thread B).

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00127 · 2.2th percentile
Published
2026-06-24T21:17Z
Affected products (6)
ProductVersionsFixed in
linux/linux_kernel≥ 6.19, < 7.0.107.0.10
linux/linux_kernelall versions—
linux/linux_kernel≥ 5.10.220, < 5.115.11
linux/linux_kernel≥ 5.15.154, < 5.165.16
linux/linux_kernel≥ 5.19, < 6.12.916.12.91
linux/linux_kernel≥ 6.13, < 6.18.336.18.33
References (5)
EPSS history
Timeline
  • 24 JUN 16:29Z
    fsnotify: fix inode reference leak in fsnotify_recalc_mask()
    cvelistv5