diff --git a/[refs] b/[refs] index 14397e47ea24..63b547679385 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 96948fc6069b68380abac2944b8b02b43a2e2057 +refs/heads/master: a69201d6f08240f20a0d33a1b7273d1e7748791c diff --git a/trunk/fs/utimes.c b/trunk/fs/utimes.c index bb0696a41735..f4fb7eca10e8 100644 --- a/trunk/fs/utimes.c +++ b/trunk/fs/utimes.c @@ -158,13 +158,17 @@ long do_utimes(int dfd, const char __user *filename, struct timespec *times, if (!(flags & AT_SYMLINK_NOFOLLOW)) lookup_flags |= LOOKUP_FOLLOW; - +retry: error = user_path_at(dfd, filename, lookup_flags, &path); if (error) goto out; error = utimes_common(&path, times); path_put(&path); + if (retry_estale(error, lookup_flags)) { + lookup_flags |= LOOKUP_REVAL; + goto retry; + } } out: