summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandr Khromov <haa@amicon.ru>2026-08-24 21:23:32 +0900
committerNamjae Jeon <linkinjeon@kernel.org>2026-08-31 19:26:12 +0900
commitc0cd3fc6824122014da2b3b0cb7ddeaa2946ec8e (patch)
tree72d5d1f946f0a7d63c51ac8da6e15058b12b59d7
parent399aa12450a61a5c73dc77e73f069ece9687c95d (diff)
downloadlinux-c0cd3fc6824122014da2b3b0cb7ddeaa2946ec8e.tar.gz
linux-c0cd3fc6824122014da2b3b0cb7ddeaa2946ec8e.zip
ksmbd: initialize FileSystemControlFlags in FS_CONTROL_INFORMATION
smb2_get_info_filesystem() reports 48 bytes for FS_CONTROL_INFORMATION, that is the whole of struct smb2_fs_control_info, but never assigns FileSystemControlFlags. Those four bytes go to the client as they are found in the response buffer. The buffer is zeroed on allocation, so a standalone request leaks nothing. A compound request can leak: the offset of the next response is advanced by the length pinned for the previous one, so a reply that was written into the buffer and then dropped in favour of the short error response of smb2_set_err_rsp() stays there, and the next reply is laid over it with only the header cleared. ksmbd does not implement quota tracking, so report no control flags. Fixes: e2f34481b24d ("cifsd: add server-side procedures for SMB3") Cc: stable@vger.kernel.org Signed-off-by: Aleksandr Khromov <haa@amicon.ru> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
-rw-r--r--fs/smb/server/smb2pdu.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index 486cd745dd21..2fbd9010513e 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -7500,6 +7500,7 @@ static int smb2_get_info_filesystem(struct ksmbd_work *work,
info->FreeSpaceStopFiltering = 0;
info->DefaultQuotaThreshold = cpu_to_le64(SMB2_NO_FID);
info->DefaultQuotaLimit = cpu_to_le64(SMB2_NO_FID);
+ info->FileSystemControlFlags = 0;
info->Padding = 0;
rsp->OutputBufferLength = cpu_to_le32(48);
fixed_len = 48;