From: Al Viro Date: Thu, 6 Mar 2025 23:28:56 +0000 (-0500) Subject: simple_recursive_removal(): saner interaction with fsnotify X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=61c5d53e815784708c45dac086c50a12ed1db694;p=thirdparty%2Fkernel%2Fstable.git simple_recursive_removal(): saner interaction with fsnotify Make it match the real unlink(2)/rmdir(2) - notify *after* the operation. And use fsnotify_delete() instead of messing with fsnotify_unlink()/fsnotify_rmdir(). Currently the only caller that cares is the one in debugfs, and there the order matching the normal syscalls makes more sense; it'll get more serious for users introduced later in the series. Reviewed-by: Amir Goldstein Reviewed-by: Christian Brauner Signed-off-by: Al Viro --- diff --git a/fs/libfs.c b/fs/libfs.c index 9ea0ecc325a81..42e226af6095a 100644 --- a/fs/libfs.c +++ b/fs/libfs.c @@ -628,12 +628,9 @@ void simple_recursive_removal(struct dentry *dentry, inode_lock(inode); if (simple_positive(victim)) { d_invalidate(victim); // avoid lost mounts - if (d_is_dir(victim)) - fsnotify_rmdir(inode, victim); - else - fsnotify_unlink(inode, victim); if (callback) callback(victim); + fsnotify_delete(inode, d_inode(victim), victim); dput(victim); // unpin it } if (victim == dentry) {