diff --git a/fs/namei.c b/fs/namei.c
index 57d6092..5d31f0b 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1725,6 +1725,8 @@
 	return 1;
 }
 
+enum {WALK_GET = 1, WALK_MORE = 2};
+
 /*
  * Do we need to follow links? We _really_ want to be able
  * to do this check without having to look at inode->i_op,
@@ -1732,12 +1734,14 @@
  * for the common case.
  */
 static inline int should_follow_link(struct nameidata *nd, struct path *link,
-				     int follow,
+				     int flags,
 				     struct inode *inode, unsigned seq)
 {
+	if (!(flags & WALK_MORE) && nd->depth)
+		put_link(nd);
 	if (likely(!d_is_symlink(link->dentry)))
 		return 0;
-	if (!follow && !(nd->flags & LOOKUP_FOLLOW))
+	if (!(flags & WALK_GET) && !(nd->flags & LOOKUP_FOLLOW))
 		return 0;
 	/* make sure that d_is_symlink above matches inode */
 	if (nd->flags & LOOKUP_RCU) {
@@ -1747,8 +1751,6 @@
 	return pick_link(nd, link, inode, seq);
 }
 
-enum {WALK_GET = 1, WALK_MORE = 2};
-
 static int walk_component(struct nameidata *nd, int flags)
 {
 	struct path path;
@@ -1789,9 +1791,7 @@
 		inode = d_backing_inode(path.dentry);
 	}
 
-	if (!(flags & WALK_MORE) && nd->depth)
-		put_link(nd);
-	err = should_follow_link(nd, &path, flags & WALK_GET, inode, seq);
+	err = should_follow_link(nd, &path, flags, inode, seq);
 	if (unlikely(err))
 		return err;
 	path_to_nameidata(&path, nd);
@@ -2616,8 +2616,6 @@
 		dput(path.dentry);
 		return -ENOENT;
 	}
-	if (nd->depth)
-		put_link(nd);
 	path.mnt = nd->path.mnt;
 	error = should_follow_link(nd, &path, 0,
 				   d_backing_inode(path.dentry), 0);
@@ -3313,8 +3311,6 @@
 	seq = 0;	/* out of RCU mode, so the value doesn't matter */
 	inode = d_backing_inode(path.dentry);
 finish_lookup:
-	if (nd->depth)
-		put_link(nd);
 	error = should_follow_link(nd, &path, 0, inode, seq);
 	if (unlikely(error))
 		return error;
