Skip to content

Commit 88d3005

Browse files
namjaejeonsmfrench
authored andcommitted
ksmbd: use correct basic info level in set_file_basic_info()
Use correct basic info level in set/get_file_basic_info(). Reviewed-by: Ralph Boehme <[email protected]> Signed-off-by: Namjae Jeon <[email protected]> Signed-off-by: Steve French <[email protected]>
1 parent ce81299 commit 88d3005

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

fs/ksmbd/smb2pdu.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4161,7 +4161,7 @@ static void get_file_access_info(struct smb2_query_info_rsp *rsp,
41614161
static int get_file_basic_info(struct smb2_query_info_rsp *rsp,
41624162
struct ksmbd_file *fp, void *rsp_org)
41634163
{
4164-
struct smb2_file_all_info *basic_info;
4164+
struct smb2_file_basic_info *basic_info;
41654165
struct kstat stat;
41664166
u64 time;
41674167

@@ -4171,7 +4171,7 @@ static int get_file_basic_info(struct smb2_query_info_rsp *rsp,
41714171
return -EACCES;
41724172
}
41734173

4174-
basic_info = (struct smb2_file_all_info *)rsp->Buffer;
4174+
basic_info = (struct smb2_file_basic_info *)rsp->Buffer;
41754175
generic_fillattr(file_mnt_user_ns(fp->filp), file_inode(fp->filp),
41764176
&stat);
41774177
basic_info->CreationTime = cpu_to_le64(fp->create_time);
@@ -4184,9 +4184,8 @@ static int get_file_basic_info(struct smb2_query_info_rsp *rsp,
41844184
basic_info->Attributes = fp->f_ci->m_fattr;
41854185
basic_info->Pad1 = 0;
41864186
rsp->OutputBufferLength =
4187-
cpu_to_le32(offsetof(struct smb2_file_all_info, AllocationSize));
4188-
inc_rfc1001_len(rsp_org, offsetof(struct smb2_file_all_info,
4189-
AllocationSize));
4187+
cpu_to_le32(sizeof(struct smb2_file_basic_info));
4188+
inc_rfc1001_len(rsp_org, sizeof(struct smb2_file_basic_info));
41904189
return 0;
41914190
}
41924191

@@ -5412,7 +5411,7 @@ static int smb2_create_link(struct ksmbd_work *work,
54125411
static int set_file_basic_info(struct ksmbd_file *fp, char *buf,
54135412
struct ksmbd_share_config *share)
54145413
{
5415-
struct smb2_file_all_info *file_info;
5414+
struct smb2_file_basic_info *file_info;
54165415
struct iattr attrs;
54175416
struct timespec64 ctime;
54185417
struct file *filp;
@@ -5423,7 +5422,7 @@ static int set_file_basic_info(struct ksmbd_file *fp, char *buf,
54235422
if (!(fp->daccess & FILE_WRITE_ATTRIBUTES_LE))
54245423
return -EACCES;
54255424

5426-
file_info = (struct smb2_file_all_info *)buf;
5425+
file_info = (struct smb2_file_basic_info *)buf;
54275426
attrs.ia_valid = 0;
54285427
filp = fp->filp;
54295428
inode = file_inode(filp);

fs/ksmbd/smb2pdu.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1464,6 +1464,15 @@ struct smb2_file_all_info { /* data block encoding of response to level 18 */
14641464
char FileName[1];
14651465
} __packed; /* level 18 Query */
14661466

1467+
struct smb2_file_basic_info { /* data block encoding of response to level 18 */
1468+
__le64 CreationTime; /* Beginning of FILE_BASIC_INFO equivalent */
1469+
__le64 LastAccessTime;
1470+
__le64 LastWriteTime;
1471+
__le64 ChangeTime;
1472+
__le32 Attributes;
1473+
__u32 Pad1; /* End of FILE_BASIC_INFO_INFO equivalent */
1474+
} __packed;
1475+
14671476
struct smb2_file_alt_name_info {
14681477
__le32 FileNameLength;
14691478
char FileName[0];

0 commit comments

Comments
 (0)