Nicolai Stange c322f6
From: Amir Goldstein <amir73il@gmail.com>
Nicolai Stange c322f6
Date: Sun, 26 May 2019 17:34:07 +0300
Nicolai Stange c322f6
Subject: debugfs: simplify __debugfs_remove_file()
Nicolai Stange c322f6
Patch-mainline: v5.3-rc1
Nicolai Stange c322f6
Git-commit: 823e545c027795997f29ec5c255aff605cf39e85
Nicolai Stange c322f6
References: bsc#1159198
Nicolai Stange c322f6
Nicolai Stange c322f6
Move simple_unlink()+d_delete() from __debugfs_remove_file() into
Nicolai Stange c322f6
caller __debugfs_remove() and rename helper for post remove file to
Nicolai Stange c322f6
__debugfs_file_removed().
Nicolai Stange c322f6
Nicolai Stange c322f6
This will simplify adding fsnotify_unlink() hook.
Nicolai Stange c322f6
Nicolai Stange c322f6
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Nicolai Stange c322f6
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Nicolai Stange c322f6
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Nicolai Stange c322f6
Signed-off-by: Jan Kara <jack@suse.cz>
Nicolai Stange c322f6
Acked-by: Nicolai Stange <nstange@suse.de>
Nicolai Stange c322f6
---
Nicolai Stange c322f6
 fs/debugfs/inode.c |   20 ++++++++------------
Nicolai Stange c322f6
 1 file changed, 8 insertions(+), 12 deletions(-)
Nicolai Stange c322f6
Nicolai Stange c322f6
--- a/fs/debugfs/inode.c
Nicolai Stange c322f6
+++ b/fs/debugfs/inode.c
Nicolai Stange c322f6
@@ -629,13 +629,10 @@ struct dentry *debugfs_create_symlink(co
Nicolai Stange c322f6
 }
Nicolai Stange c322f6
 EXPORT_SYMBOL_GPL(debugfs_create_symlink);
Nicolai Stange c322f6
 
Nicolai Stange c322f6
-static void __debugfs_remove_file(struct dentry *dentry, struct dentry *parent)
Nicolai Stange c322f6
+static void __debugfs_file_removed(struct dentry *dentry)
Nicolai Stange c322f6
 {
Nicolai Stange c322f6
 	struct debugfs_fsdata *fsd;
Nicolai Stange c322f6
 
Nicolai Stange c322f6
-	simple_unlink(d_inode(parent), dentry);
Nicolai Stange c322f6
-	d_delete(dentry);
Nicolai Stange c322f6
-
Nicolai Stange c322f6
 	/*
Nicolai Stange c322f6
 	 * Paired with the closing smp_mb() implied by a successful
Nicolai Stange c322f6
 	 * cmpxchg() in debugfs_file_get(): either
Nicolai Stange c322f6
@@ -656,16 +653,15 @@ static int __debugfs_remove(struct dentr
Nicolai Stange c322f6
 
Nicolai Stange c322f6
 	if (simple_positive(dentry)) {
Nicolai Stange c322f6
 		dget(dentry);
Nicolai Stange c322f6
-		if (!d_is_reg(dentry)) {
Nicolai Stange c322f6
-			if (d_is_dir(dentry))
Nicolai Stange c322f6
-				ret = simple_rmdir(d_inode(parent), dentry);
Nicolai Stange c322f6
-			else
Nicolai Stange c322f6
-				simple_unlink(d_inode(parent), dentry);
Nicolai Stange c322f6
-			if (!ret)
Nicolai Stange c322f6
-				d_delete(dentry);
Nicolai Stange c322f6
+		if (d_is_dir(dentry)) {
Nicolai Stange c322f6
+			ret = simple_rmdir(d_inode(parent), dentry);
Nicolai Stange c322f6
 		} else {
Nicolai Stange c322f6
-			__debugfs_remove_file(dentry, parent);
Nicolai Stange c322f6
+			simple_unlink(d_inode(parent), dentry);
Nicolai Stange c322f6
 		}
Nicolai Stange c322f6
+		if (!ret)
Nicolai Stange c322f6
+			d_delete(dentry);
Nicolai Stange c322f6
+		if (d_is_reg(dentry))
Nicolai Stange c322f6
+			__debugfs_file_removed(dentry);
Nicolai Stange c322f6
 		dput(dentry);
Nicolai Stange c322f6
 	}
Nicolai Stange c322f6
 	return ret;