ksmbd: add default data stream name in FILE_STREAM_INFORMATION
Windows client expect to get default stream name(::DATA) in FILE_STREAM_INFORMATION response even if there is no stream data in file. This patch fix update failure when writing ppt or doc files. Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> Reviewed-By: Tom Talpey <tom@talpey.com> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
e44fd5081c
commit
9f6323311c
@ -4428,17 +4428,15 @@ static void get_file_stream_info(struct ksmbd_work *work,
|
|||||||
file_info->NextEntryOffset = cpu_to_le32(next);
|
file_info->NextEntryOffset = cpu_to_le32(next);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nbytes) {
|
if (!S_ISDIR(stat.mode)) {
|
||||||
file_info = (struct smb2_file_stream_info *)
|
file_info = (struct smb2_file_stream_info *)
|
||||||
&rsp->Buffer[nbytes];
|
&rsp->Buffer[nbytes];
|
||||||
streamlen = smbConvertToUTF16((__le16 *)file_info->StreamName,
|
streamlen = smbConvertToUTF16((__le16 *)file_info->StreamName,
|
||||||
"::$DATA", 7, conn->local_nls, 0);
|
"::$DATA", 7, conn->local_nls, 0);
|
||||||
streamlen *= 2;
|
streamlen *= 2;
|
||||||
file_info->StreamNameLength = cpu_to_le32(streamlen);
|
file_info->StreamNameLength = cpu_to_le32(streamlen);
|
||||||
file_info->StreamSize = S_ISDIR(stat.mode) ? 0 :
|
file_info->StreamSize = 0;
|
||||||
cpu_to_le64(stat.size);
|
file_info->StreamAllocationSize = 0;
|
||||||
file_info->StreamAllocationSize = S_ISDIR(stat.mode) ? 0 :
|
|
||||||
cpu_to_le64(stat.size);
|
|
||||||
nbytes += sizeof(struct smb2_file_stream_info) + streamlen;
|
nbytes += sizeof(struct smb2_file_stream_info) + streamlen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user