aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--module/zfs/zpl_ctldir.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/module/zfs/zpl_ctldir.c b/module/zfs/zpl_ctldir.c
index 7dfaf6ebc..a2d8fa9fe 100644
--- a/module/zfs/zpl_ctldir.c
+++ b/module/zfs/zpl_ctldir.c
@@ -357,6 +357,13 @@ zpl_snapdir_automount(struct path *path)
return ERR_PTR(error);
/*
+ * Ensure path->dentry points to the dentry for the root of the
+ * newly-mounted snapshot, otherwise this function may be called
+ * repeatedly which can lead to an incorrect ELOOP error return.
+ */
+ follow_up(path);
+
+ /*
* Rather than returning the new vfsmount for the snapshot we must
* return NULL to indicate a mount collision. This is done because
* the user space mount calls do_add_mount() which adds the vfsmount