CVE-2026-52990
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
24/06/2026
Last modified:
14/07/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
fsnotify: fix inode reference leak in fsnotify_recalc_mask()<br />
<br />
fsnotify_recalc_mask() fails to handle the return value of<br />
__fsnotify_recalc_mask(), which may return an inode pointer that needs<br />
to be released via fsnotify_drop_object() when the connector&#39;s HAS_IREF<br />
flag transitions from set to cleared.<br />
<br />
This manifests as a hung task with the following call trace:<br />
<br />
INFO: task umount:1234 blocked for more than 120 seconds.<br />
Call Trace:<br />
__schedule<br />
schedule<br />
fsnotify_sb_delete<br />
generic_shutdown_super<br />
kill_anon_super<br />
cleanup_mnt<br />
task_work_run<br />
do_exit<br />
do_group_exit<br />
<br />
The race window that triggers the iref leak:<br />
<br />
Thread A (adding mark) Thread B (removing mark)<br />
────────────────────── ────────────────────────<br />
fsnotify_add_mark_locked():<br />
fsnotify_add_mark_list():<br />
spin_lock(conn->lock)<br />
add mark_B(evictable) to list<br />
spin_unlock(conn->lock)<br />
return<br />
<br />
/* ---- gap: no lock held ---- */<br />
<br />
fsnotify_detach_mark(mark_A):<br />
spin_lock(mark_A->lock)<br />
clear ATTACHED flag on mark_A<br />
spin_unlock(mark_A->lock)<br />
fsnotify_put_mark(mark_A)<br />
<br />
fsnotify_recalc_mask():<br />
spin_lock(conn->lock)<br />
__fsnotify_recalc_mask():<br />
/* mark_A skipped: ATTACHED cleared */<br />
/* only mark_B(evictable) remains */<br />
want_iref = false<br />
has_iref = true /* not yet cleared */<br />
-> HAS_IREF transitions true -> false<br />
-> returns inode pointer<br />
spin_unlock(conn->lock)<br />
/* BUG: return value discarded!<br />
* iput() and fsnotify_put_sb_watched_objects()<br />
* are never called */<br />
<br />
Fix this by deferring the transition true -> false of HAS_IREF flag from<br />
fsnotify_recalc_mask() (Thread A) to fsnotify_put_mark() (thread B).
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.10.220 (including) | 5.11 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.15.154 (including) | 5.16 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.19 (including) | 6.12.91 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.18.33 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 (including) | 7.0.10 (excluding) |
| cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page



