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

Commit d22e6338 authored by Oleg Drokin's avatar Oleg Drokin Committed by Al Viro
Browse files

Fix mountpoint reference leakage in linkat



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]

Signed-off-by: default avatarOleg Drokin: <green@linuxhacker.ru>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent b168fff7
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -3926,10 +3926,13 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
	done_path_create(&new_path, new_dentry);
	if (delegated_inode) {
		error = break_deleg_wait(&delegated_inode);
		if (!error)
		if (!error) {
			path_put(&old_path);
			goto retry;
		}
	}
	if (retry_estale(error, how)) {
		path_put(&old_path);
		how |= LOOKUP_REVAL;
		goto retry;
	}