diff options
Diffstat (limited to 'fs/utimes.c')
| -rw-r--r-- | fs/utimes.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/utimes.c b/fs/utimes.c index bb0696a41735..f4fb7eca10e8 100644 --- a/fs/utimes.c +++ b/fs/utimes.c | |||
| @@ -158,13 +158,17 @@ long do_utimes(int dfd, const char __user *filename, struct timespec *times, | |||
| 158 | 158 | ||
| 159 | if (!(flags & AT_SYMLINK_NOFOLLOW)) | 159 | if (!(flags & AT_SYMLINK_NOFOLLOW)) |
| 160 | lookup_flags |= LOOKUP_FOLLOW; | 160 | lookup_flags |= LOOKUP_FOLLOW; |
| 161 | 161 | retry: | |
| 162 | error = user_path_at(dfd, filename, lookup_flags, &path); | 162 | error = user_path_at(dfd, filename, lookup_flags, &path); |
| 163 | if (error) | 163 | if (error) |
| 164 | goto out; | 164 | goto out; |
| 165 | 165 | ||
| 166 | error = utimes_common(&path, times); | 166 | error = utimes_common(&path, times); |
| 167 | path_put(&path); | 167 | path_put(&path); |
| 168 | if (retry_estale(error, lookup_flags)) { | ||
| 169 | lookup_flags |= LOOKUP_REVAL; | ||
| 170 | goto retry; | ||
| 171 | } | ||
| 168 | } | 172 | } |
| 169 | 173 | ||
| 170 | out: | 174 | out: |
