From: Jeff Layton Date: Tue, 11 Dec 2012 17:10:13 +0000 (-0500) Subject: vfs: make fchmodat retry once on ESTALE errors X-Git-Tag: upstream/snapshot3+hdmi~5970^2~11 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=14ff690c0f94cf2e37f7c448f4f09bf0b4006d62;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git vfs: make fchmodat retry once on ESTALE errors Signed-off-by: Jeff Layton Signed-off-by: Al Viro --- diff --git a/fs/open.c b/fs/open.c index a13a54d..99c3ce5 100644 --- a/fs/open.c +++ b/fs/open.c @@ -514,11 +514,16 @@ SYSCALL_DEFINE3(fchmodat, int, dfd, const char __user *, filename, umode_t, mode { struct path path; int error; - - error = user_path_at(dfd, filename, LOOKUP_FOLLOW, &path); + unsigned int lookup_flags = LOOKUP_FOLLOW; +retry: + error = user_path_at(dfd, filename, lookup_flags, &path); if (!error) { error = chmod_common(&path, mode); path_put(&path); + if (retry_estale(error, lookup_flags)) { + lookup_flags |= LOOKUP_REVAL; + goto retry; + } } return error; }