aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/utimes.c6
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 161retry:
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
170out: 174out: