diff --git a/[refs] b/[refs] index cfdb5d877338..c81b138a3501 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1be4a0900be5d2c2fd9cd012e3a153e1ea47b96a +refs/heads/master: 839d9f93c9f1623fb37234d464d739617879d97e diff --git a/trunk/fs/namei.c b/trunk/fs/namei.c index 020fb8c8d1cd..519900d83bcb 100644 --- a/trunk/fs/namei.c +++ b/trunk/fs/namei.c @@ -526,7 +526,6 @@ static inline int __do_follow_link(struct dentry *dentry, struct nameidata *nd) static inline int do_follow_link(struct path *path, struct nameidata *nd) { int err = -ELOOP; - mntget(path->mnt); if (current->link_count >= MAX_NESTED_LINKS) goto loop; if (current->total_link_count >= 40) @@ -539,16 +538,16 @@ static inline int do_follow_link(struct path *path, struct nameidata *nd) current->link_count++; current->total_link_count++; nd->depth++; + mntget(path->mnt); err = __do_follow_link(path->dentry, nd); - current->link_count--; - nd->depth--; dput(path->dentry); mntput(path->mnt); + current->link_count--; + nd->depth--; return err; loop: - path_release(nd); dput(path->dentry); - mntput(path->mnt); + path_release(nd); return err; }