On Wed, Aug 07, 2024 at 11:50:50AM +0200, Mateusz Guzik wrote: > tripping ip: > vfs_tmpfile+0x162/0x230: > fsnotify_parent at include/linux/fsnotify.h:81 > (inlined by) fsnotify_file at include/linux/fsnotify.h:131 > (inlined by) fsnotify_open at include/linux/fsnotify.h:401 > (inlined by) vfs_tmpfile at fs/namei.c:3781 Try this for incremental; missed the fact that finish_open() is used by ->tmpfile() instances, not just ->atomic_open(). Al, crawling back to sleep... diff --git a/fs/namei.c b/fs/namei.c index 95345a5beb3a..0536907e8e79 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -3776,7 +3776,10 @@ int vfs_tmpfile(struct mnt_idmap *idmap, file->f_path.dentry = child; mode = vfs_prepare_mode(idmap, dir, mode, mode, mode); error = dir->i_op->tmpfile(idmap, dir, file, mode); - dput(child); + if (file->f_mode & FMODE_OPENED) + mntget(parentpath->mnt); + else + dput(child); if (file->f_mode & FMODE_OPENED) fsnotify_open(file); if (error)