Commit 03cb0a7b authored by Oleg Drokin's avatar Oleg Drokin Committed by Jiri Slaby

Fix mountpoint reference leakage in linkat

commit d22e6338 upstream.

Recent changes to retry on ESTALE in linkat
(commit 442e31ca)
introduced a mountpoint reference leak and a small memory
leak in case a filesystem link operation returns ESTALE
which is pretty normal for distributed filesystems like
lustre, nfs and so on.
Free old_path in such a case.

[AV: there was another missing path_put() nearby - on the previous
goto retry]

[js: the second path_put is not in 3.12 yet, hunk removed]
Signed-off-by: default avatarOleg Drokin: <green@linuxhacker.ru>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
parent 00c53b02
...@@ -3924,6 +3924,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname, ...@@ -3924,6 +3924,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
out_dput: out_dput:
done_path_create(&new_path, new_dentry); done_path_create(&new_path, new_dentry);
if (retry_estale(error, how)) { if (retry_estale(error, how)) {
path_put(&old_path);
how |= LOOKUP_REVAL; how |= LOOKUP_REVAL;
goto retry; goto retry;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment