From bae48796028d2df4bde9e55661e389dd8dd751d6 Mon Sep 17 00:00:00 2001 From: David Howells Date: Fri, 14 Jan 2011 18:45:53 +0000 Subject: [PATCH] --- yaml --- r: 231513 b: refs/heads/master c: db3729153e82ba3ada89681f26c4f1b6d6807a80 h: refs/heads/master i: 231511: 75ee47b416198837838d4a2bba903f6e807dce40 v: v3 --- [refs] | 2 +- trunk/fs/namei.c | 17 +++-------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index 69167d5209b6..777847235481 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 01c64feac45cea1317263eabc4f7ee1b240f297f +refs/heads/master: db3729153e82ba3ada89681f26c4f1b6d6807a80 diff --git a/trunk/fs/namei.c b/trunk/fs/namei.c index dc50bfb2f5d6..61995fba4e21 100644 --- a/trunk/fs/namei.c +++ b/trunk/fs/namei.c @@ -1341,17 +1341,6 @@ static int do_lookup(struct nameidata *nd, struct qstr *name, return PTR_ERR(dentry); } -/* - * This is a temporary kludge to deal with "automount" symlinks; proper - * solution is to trigger them on follow_mount(), so that do_lookup() - * would DTRT. To be killed before 2.6.34-final. - */ -static inline int follow_on_final(struct inode *inode, unsigned lookup_flags) -{ - return inode && unlikely(inode->i_op->follow_link) && - ((lookup_flags & LOOKUP_FOLLOW) || S_ISDIR(inode->i_mode)); -} - /* * Name resolution. * This is the basic name resolution function, turning a pathname into @@ -1490,7 +1479,8 @@ static int link_path_walk(const char *name, struct nameidata *nd) err = do_lookup(nd, &this, &next, &inode); if (err) break; - if (follow_on_final(inode, lookup_flags)) { + if (inode && unlikely(inode->i_op->follow_link) && + (lookup_flags & LOOKUP_FOLLOW)) { if (nameidata_dentry_drop_rcu_maybe(nd, next.dentry)) return -ECHILD; BUG_ON(inode != next.dentry->d_inode); @@ -2543,8 +2533,7 @@ struct file *do_filp_open(int dfd, const char *pathname, struct inode *linki = link.dentry->d_inode; void *cookie; error = -ELOOP; - /* S_ISDIR part is a temporary automount kludge */ - if (!(nd.flags & LOOKUP_FOLLOW) && !S_ISDIR(linki->i_mode)) + if (!(nd.flags & LOOKUP_FOLLOW)) goto exit_dput; if (count++ == 32) goto exit_dput;