]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ksmbd: fix a mount write count leak in ksmbd_vfs_kern_path_locked()
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 6 Jul 2025 01:26:45 +0000 (02:26 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Jul 2025 16:35:16 +0000 (18:35 +0200)
commit 277627b431a0a6401635c416a21b2a0f77a77347 upstream.

If the call of ksmbd_vfs_lock_parent() fails, we drop the parent_path
references and return an error.  We need to drop the write access we
just got on parent_path->mnt before we drop the mount reference - callers
assume that ksmbd_vfs_kern_path_locked() returns with mount write
access grabbed if and only if it has returned 0.

Fixes: 864fb5d37163 ("ksmbd: fix possible deadlock in smb2_open")
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/smb/server/vfs.c

index 3bbf2382706056163440b1580e8df735c9e84c06..de813700f3d4f6349f8c1dfc3a454a9ef7060375 100644 (file)
@@ -1293,6 +1293,7 @@ out1:
 
                err = ksmbd_vfs_lock_parent(parent_path->dentry, path->dentry);
                if (err) {
+                       mnt_drop_write(parent_path->mnt);
                        path_put(path);
                        path_put(parent_path);
                }