fs/mount_setattr: always cleanup mount_kattr

commit 012e332286 upstream.

Make sure that finish_mount_kattr() is called after mount_kattr was
succesfully built in both the success and failure case to prevent
leaking any references we took when we built it.  We returned early if
path lookup failed thereby risking to leak an additional reference we
took when building mount_kattr when an idmapped mount was requested.

Cc: linux-fsdevel@vger.kernel.org
Cc: stable@vger.kernel.org
Fixes: 9caccd4154 ("fs: introduce MOUNT_ATTR_IDMAP")
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Christian Brauner 2021-12-30 20:23:09 +01:00 committed by Greg Kroah-Hartman
parent 08eacbd141
commit 47b5d0a753

View File

@ -4263,12 +4263,11 @@ SYSCALL_DEFINE5(mount_setattr, int, dfd, const char __user *, path,
return err;
err = user_path_at(dfd, path, kattr.lookup_flags, &target);
if (err)
return err;
if (!err) {
err = do_mount_setattr(&target, &kattr);
finish_mount_kattr(&kattr);
path_put(&target);
}
finish_mount_kattr(&kattr);
return err;
}