From 27a739dbd30c75201a83f0127a585f890a35a81c Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Sat, 4 Feb 2006 23:28:01 -0800 Subject: [PATCH] --- yaml --- r: 19810 b: refs/heads/master c: f55eab822b93864ef4eef3bd7eadac2a727c914b h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/namei.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 01cb450a9f5e..4cda421a3ea7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4484ebf12bdb0ebcdc6e8951243cbab3d7f6f4c1 +refs/heads/master: f55eab822b93864ef4eef3bd7eadac2a727c914b diff --git a/trunk/fs/namei.c b/trunk/fs/namei.c index 7ac9fb4acb2c..b760e1e18b48 100644 --- a/trunk/fs/namei.c +++ b/trunk/fs/namei.c @@ -790,7 +790,7 @@ static fastcall int __link_path_walk(const char * name, struct nameidata *nd) inode = nd->dentry->d_inode; if (nd->depth) - lookup_flags = LOOKUP_FOLLOW; + lookup_flags = LOOKUP_FOLLOW | (nd->flags & LOOKUP_CONTINUE); /* At this point we know we have a real path component. */ for(;;) { @@ -885,7 +885,8 @@ static fastcall int __link_path_walk(const char * name, struct nameidata *nd) last_with_slashes: lookup_flags |= LOOKUP_FOLLOW | LOOKUP_DIRECTORY; last_component: - nd->flags &= ~LOOKUP_CONTINUE; + /* Clear LOOKUP_CONTINUE iff it was previously unset */ + nd->flags &= lookup_flags | ~LOOKUP_CONTINUE; if (lookup_flags & LOOKUP_PARENT) goto lookup_parent; if (this.name[0] == '.') switch (this.len) {