File descriptor is irrelevent when LOOKUP_ROOT is set. Introduce AT_FDINV to avoid using hard coded value or reusing existing macro. Signed-off-by: Yan Hong <clouds.yan@xxxxxxxxx> --- fs/namei.c | 11 ++++++----- include/linux/fcntl.h | 2 ++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/fs/namei.c b/fs/namei.c index c5b85b3..5ffd97d 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -2034,8 +2034,8 @@ int vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt, nd.root.dentry = dentry; nd.root.mnt = mnt; BUG_ON(flags & LOOKUP_PARENT); - /* the first argument of do_path_lookup() is ignored with LOOKUP_ROOT */ - err = do_path_lookup(AT_FDCWD, name, flags | LOOKUP_ROOT, &nd); + + err = do_path_lookup(AT_FDINV, name, flags | LOOKUP_ROOT, &nd); if (!err) *path = nd.path; return err; @@ -2969,11 +2969,12 @@ struct file *do_file_open_root(struct dentry *dentry, struct vfsmount *mnt, if (dentry->d_inode->i_op->follow_link && op->intent & LOOKUP_OPEN) return ERR_PTR(-ELOOP); - file = path_openat(-1, name, &nd, op, flags | LOOKUP_RCU); + file = path_openat(AT_FDINV, name, &nd, op, flags | LOOKUP_RCU); if (unlikely(file == ERR_PTR(-ECHILD))) - file = path_openat(-1, name, &nd, op, flags); + file = path_openat(AT_FDINV, name, &nd, op, flags); if (unlikely(file == ERR_PTR(-ESTALE))) - file = path_openat(-1, name, &nd, op, flags | LOOKUP_REVAL); + file = path_openat(AT_FDINV, name, &nd, op, + flags | LOOKUP_REVAL); return file; } diff --git a/include/linux/fcntl.h b/include/linux/fcntl.h index f550f89..abd94fe 100644 --- a/include/linux/fcntl.h +++ b/include/linux/fcntl.h @@ -41,6 +41,8 @@ #define AT_FDCWD -100 /* Special value used to indicate openat should use the current working directory. */ +#define AT_FDINV -200 /* Special value used when LOOKUP_ROOT + is set. */ #define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ #define AT_REMOVEDIR 0x200 /* Remove directory instead of unlinking file. */ -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html