summaryrefslogtreecommitdiff
path: root/kernels/linux-libre-knock/rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch
diff options
context:
space:
mode:
authorDrtan Samos <lashdu@drtan.twilightparadox.com>2014-03-03 18:49:15 +0100
committerDrtan Samos <lashdu@drtan.twilightparadox.com>2014-03-03 18:49:15 +0100
commit926e54e67433d33d75b19b21544c5b8303389aa0 (patch)
tree6177f2e93611ffba8ef822da12850bf3565d7766 /kernels/linux-libre-knock/rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch
parentc850156e865805296b73eee01caa4b4469191437 (diff)
parent535ef7c5859bc88ca3a0d382261632ec8d8df066 (diff)
downloadabslibre-926e54e67433d33d75b19b21544c5b8303389aa0.tar.gz
abslibre-926e54e67433d33d75b19b21544c5b8303389aa0.tar.bz2
abslibre-926e54e67433d33d75b19b21544c5b8303389aa0.zip
Merge branch 'master' of git://projects.parabolagnulinux.org/abslibre
Diffstat (limited to 'kernels/linux-libre-knock/rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch')
-rw-r--r--kernels/linux-libre-knock/rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/kernels/linux-libre-knock/rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch b/kernels/linux-libre-knock/rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch
new file mode 100644
index 000000000..ed03f34dd
--- /dev/null
+++ b/kernels/linux-libre-knock/rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch
@@ -0,0 +1,50 @@
+Bugzilla: 1037793
+Upstream-status: submitted for 3.14
+
+Currently, it could leak dentry references in some cases. Make sure
+we clean up properly.
+
+Signed-off-by: Jeff Layton <jlayton@redhat.com>
+---
+ net/sunrpc/rpc_pipe.c | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
+index 5d973b2..b185548 100644
+--- a/net/sunrpc/rpc_pipe.c
++++ b/net/sunrpc/rpc_pipe.c
+@@ -1369,6 +1369,18 @@ out:
+ return pipe_dentry;
+ }
+
++static void
++rpc_gssd_dummy_depopulate(struct dentry *pipe_dentry)
++{
++ struct dentry *clnt_dir = pipe_dentry->d_parent;
++ struct dentry *gssd_dir = clnt_dir->d_parent;
++
++ __rpc_rmpipe(clnt_dir->d_inode, pipe_dentry);
++ __rpc_depopulate(clnt_dir, gssd_dummy_info_file, 0, 1);
++ __rpc_depopulate(gssd_dir, gssd_dummy_clnt_dir, 0, 1);
++ dput(pipe_dentry);
++}
++
+ static int
+ rpc_fill_super(struct super_block *sb, void *data, int silent)
+ {
+@@ -1412,7 +1424,7 @@ rpc_fill_super(struct super_block *sb, void *data, int silent)
+ return 0;
+
+ err_depopulate:
+- dput(gssd_dentry);
++ rpc_gssd_dummy_depopulate(gssd_dentry);
+ blocking_notifier_call_chain(&rpc_pipefs_notifier_list,
+ RPC_PIPEFS_UMOUNT,
+ sb);
+--
+1.8.4.2
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html