Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ksmbd: fix error code overwriting in smb2_get_info_filesystem()

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>

authored by

Matvey Kovalev and committed by
Steve French
88daf2f4 c20988c2

+2 -1
+2 -1
fs/smb/server/smb2pdu.c
··· 5629 5629 5630 5630 if (!work->tcon->posix_extensions) { 5631 5631 pr_err("client doesn't negotiate with SMB3.1.1 POSIX Extensions\n"); 5632 - rc = -EOPNOTSUPP; 5632 + path_put(&path); 5633 + return -EOPNOTSUPP; 5633 5634 } else { 5634 5635 info = (struct filesystem_posix_info *)(rsp->Buffer); 5635 5636 info->OptimalTransferSize = cpu_to_le32(stfs.f_bsize);