fs/smb/server/smb2pdu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
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>
---
fs/smb/server/smb2pdu.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index a565fc36cee6d..a1db006ab6e92 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -5628,7 +5628,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);
--
2.43.0.windows.1
… > ++ b/fs/smb/server/smb2pdu.c > @@ -5628,7 +5628,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); … How do you think about to avoid duplicate source code another bit? https://elixir.bootlin.com/linux/v6.17-rc7/source/fs/smb/server/smb2pdu.c#L5437-L5653 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/coding-style.rst?h=v6.17-rc7#n532 Would you like to choose a more appropriate subsystem specification? https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.17-rc7#n646 Regards, Markus
On Thu, Sep 25, 2025 at 9:14 PM Matvey Kovalev <matvey.kovalev@ispras.ru> wrote: > > 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> Applied it to #ksmbd-for-next-next. Thanks!
© 2016 - 2025 Red Hat, Inc.