Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 972567f1 authored by Jeff Layton's avatar Jeff Layton Committed by Al Viro
Browse files

vfs: fix mknodat to retry on ESTALE errors

parent 1ac12b4b
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -3172,12 +3172,13 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, umode_t, mode,
	struct dentry *dentry;
	struct path path;
	int error;
	unsigned int lookup_flags = 0;

	error = may_mknod(mode);
	if (error)
		return error;

	dentry = user_path_create(dfd, filename, &path, 0);
retry:
	dentry = user_path_create(dfd, filename, &path, lookup_flags);
	if (IS_ERR(dentry))
		return PTR_ERR(dentry);

@@ -3200,6 +3201,10 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, umode_t, mode,
	}
out:
	done_path_create(&path, dentry);
	if (retry_estale(error, lookup_flags)) {
		lookup_flags |= LOOKUP_REVAL;
		goto retry;
	}
	return error;
}