]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ksmbd: fix error code overwriting in smb2_get_info_filesystem()
authorMatvey Kovalev <matvey.kovalev@ispras.ru>
Thu, 25 Sep 2025 12:12:34 +0000 (15:12 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Oct 2025 09:56:40 +0000 (11:56 +0200)
commit 88daf2f448aad05a2e6df738d66fe8b0cf85cee0 upstream.

If client doesn't negotiate with SMB3.1.1 POSIX Extensions,
then proper error code won't be returned due to overwriting.

Return error immediately.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: e2f34481b24db ("cifsd: add server-side procedures for SMB3")
Cc: stable@vger.kernel.org
Signed-off-by: Matvey Kovalev <matvey.kovalev@ispras.ru>
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/smb2pdu.c

index 7943b2ee2a764f044822214b4c47d1889b705a97..5cf14a910d5bcfe55c7424841d47e09ca563a515 100644 (file)
@@ -5233,7 +5233,8 @@ static int smb2_get_info_filesystem(struct ksmbd_work *work,
 
                if (!work->tcon->posix_extensions) {
                        pr_err("client doesn't negotiate with SMB3.1.1 POSIX Extensions\n");
-                       rc = -EOPNOTSUPP;
+                       path_put(&path);
+                       return -EOPNOTSUPP;
                } else {
                        info = (struct filesystem_posix_info *)(rsp->Buffer);
                        info->OptimalTransferSize = cpu_to_le32(stfs.f_bsize);