diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2008-07-22 09:59:21 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2008-07-26 20:53:34 -0400 |
commit | 2d8f30380ab8c706f4e0a8f1aaa22b5886e9ac8a (patch) | |
tree | b798097fd831eab39f35c8c2e5a8ccfd7a850ef5 /fs/utimes.c | |
parent | 256984a83880ff7ac78055cb87baea48137f0b77 (diff) |
[PATCH] sanitize __user_walk_fd() et.al.
* do not pass nameidata; struct path is all the callers want.
* switch to new helpers:
user_path_at(dfd, pathname, flags, &path)
user_path(pathname, &path)
user_lpath(pathname, &path)
user_path_dir(pathname, &path) (fail if not a directory)
The last 3 are trivial macro wrappers for the first one.
* remove nameidata in callers.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/utimes.c')
-rw-r--r-- | fs/utimes.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/utimes.c b/fs/utimes.c index dc28b7826259..6929e3e91d05 100644 --- a/fs/utimes.c +++ b/fs/utimes.c | |||
@@ -152,18 +152,18 @@ long do_utimes(int dfd, char __user *filename, struct timespec *times, int flags | |||
152 | error = utimes_common(&file->f_path, times); | 152 | error = utimes_common(&file->f_path, times); |
153 | fput(file); | 153 | fput(file); |
154 | } else { | 154 | } else { |
155 | struct nameidata nd; | 155 | struct path path; |
156 | int lookup_flags = 0; | 156 | int lookup_flags = 0; |
157 | 157 | ||
158 | if (!(flags & AT_SYMLINK_NOFOLLOW)) | 158 | if (!(flags & AT_SYMLINK_NOFOLLOW)) |
159 | lookup_flags |= LOOKUP_FOLLOW; | 159 | lookup_flags |= LOOKUP_FOLLOW; |
160 | 160 | ||
161 | error = __user_walk_fd(dfd, filename, lookup_flags, &nd); | 161 | error = user_path_at(dfd, filename, lookup_flags, &path); |
162 | if (error) | 162 | if (error) |
163 | goto out; | 163 | goto out; |
164 | 164 | ||
165 | error = utimes_common(&nd.path, times); | 165 | error = utimes_common(&path, times); |
166 | path_put(&nd.path); | 166 | path_put(&path); |
167 | } | 167 | } |
168 | 168 | ||
169 | out: | 169 | out: |