From: Ben Hutchings Date: Sun, 19 Oct 2014 22:07:02 +0000 (+0100) Subject: vfs: Fold follow_mount_rcu() into follow_dotdot_rcu() X-Git-Tag: v3.2.64~55 X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=commitdiff_plain;h=a7caf25487f8b0d85f0fa0eb9403301f2b35c1b1 vfs: Fold follow_mount_rcu() into follow_dotdot_rcu() This is needed before commit 4023bfc9f351 ('be careful with nd->inode in path_init() and follow_dotdot_rcu()'). A similar change was made upstream as part of commit b37199e626b3 ('rcuwalk: recheck mount_lock after mountpoint crossing attempts'). Signed-off-by: Ben Hutchings --- diff --git a/fs/namei.c b/fs/namei.c index 4945ef692c66..032053018b8a 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -911,19 +911,6 @@ static bool __follow_mount_rcu(struct nameidata *nd, struct path *path, return true; } -static void follow_mount_rcu(struct nameidata *nd) -{ - while (d_mountpoint(nd->path.dentry)) { - struct vfsmount *mounted; - mounted = __lookup_mnt(nd->path.mnt, nd->path.dentry, 1); - if (!mounted) - break; - nd->path.mnt = mounted; - nd->path.dentry = mounted->mnt_root; - nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq); - } -} - static int follow_dotdot_rcu(struct nameidata *nd) { if (!nd->root.mnt) @@ -950,7 +937,15 @@ static int follow_dotdot_rcu(struct nameidata *nd) break; nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq); } - follow_mount_rcu(nd); + while (d_mountpoint(nd->path.dentry)) { + struct vfsmount *mounted; + mounted = __lookup_mnt(nd->path.mnt, nd->path.dentry, 1); + if (!mounted) + break; + nd->path.mnt = mounted; + nd->path.dentry = mounted->mnt_root; + nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq); + } nd->inode = nd->path.dentry->d_inode; return 0;