diff options
| author | Amir Goldstein <amir73il@gmail.com> | 2026-09-02 18:49:25 +0200 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2026-09-04 13:00:42 +0200 |
| commit | 669bb5af15d41a21359d00a441490f87a88eb52a (patch) | |
| tree | d13de469e00f900e9f769dbb46f1e6196280421e /tools/lib/python/kdoc | |
| parent | 7d1d1a34d29cb8f1956c7a3c207503e2f18cc0cc (diff) | |
fs: make sure to call fsnotify_inoderemove() only once when inode is dead
Daehyeon reported a race wherein fsnotify_removeinode() can be called
when inode still has a live alias. This can lead to several undesired
outcomes such as crashes in fsnotify code or avoidance of inode mark
notifications.
Check that inode is really "dead", meaning no nlink and no more aliases
before calling fsnotify_inoderemove() for final cleanup of inode marks.
Also do not allow open_by_handle() to add new aliases to a "dead" inode.
Ideally, we'd call fsnotify_inoderemove() once last inode reference is
dropped to make things simpler. Alas fsnotify inode marks currently hold
inode references and thus this doesn't work. Once we teach fsnotify to
avoid holding inode references, these games with dead inodes can go as
well.
Reported-and-tested-by: Daehyeon Ko <4ncienth@gmail.com>
Closes: https://lore.kernel.org/linux-fsdevel/20260827045007.3831259-1-4ncienth@gmail.com/
CC: stable@vger.kernel.org
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20260902164924.1333135-2-jack@suse.cz
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
Diffstat (limited to 'tools/lib/python/kdoc')
0 files changed, 0 insertions, 0 deletions
