lkml.org 
[lkml]   [2012]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v1 07/12] vfs: add a "reval" flag to args for user_path_parent
Date
All of the current callers set this to "false" for now, but we'll fix
them later to set it to true when they retry on an ESTALE error.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
---
fs/namei.c | 16 ++++++++++------
1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/fs/namei.c b/fs/namei.c
index e9da40b..b1b116b 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1908,15 +1908,19 @@ int user_path_at(int dfd, const char __user *name, unsigned flags,
}

static int user_path_parent(int dfd, const char __user *path,
- struct nameidata *nd, char **name)
+ struct nameidata *nd, char **name, bool reval)
{
char *s = getname(path);
int error;
+ unsigned int lookup_flags = LOOKUP_PARENT;

if (IS_ERR(s))
return PTR_ERR(s);

- error = do_path_lookup(dfd, s, LOOKUP_PARENT, nd);
+ if (reval)
+ lookup_flags |= LOOKUP_REVAL;
+
+ error = do_path_lookup(dfd, s, lookup_flags, nd);
if (error)
putname(s);
else
@@ -2759,7 +2763,7 @@ static long do_rmdir(int dfd, const char __user *pathname)
struct dentry *dentry;
struct nameidata nd;

- error = user_path_parent(dfd, pathname, &nd, &name);
+ error = user_path_parent(dfd, pathname, &nd, &name, false);
if (error)
return error;

@@ -2856,7 +2860,7 @@ static long do_unlinkat(int dfd, const char __user *pathname)
struct nameidata nd;
struct inode *inode = NULL;

- error = user_path_parent(dfd, pathname, &nd, &name);
+ error = user_path_parent(dfd, pathname, &nd, &name, false);
if (error)
return error;

@@ -3255,11 +3259,11 @@ SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname,
char *to;
int error;

- error = user_path_parent(olddfd, oldname, &oldnd, &from);
+ error = user_path_parent(olddfd, oldname, &oldnd, &from, false);
if (error)
goto exit;

- error = user_path_parent(newdfd, newname, &newnd, &to);
+ error = user_path_parent(newdfd, newname, &newnd, &to, false);
if (error)
goto exit1;

--
1.7.7.6


\
 
 \ /
  Last update: 2012-04-26 19:07    [W:0.035 / U:1.092 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site