mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 20:54:10 +08:00
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 <slow@samba.org> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
ce812992f2
commit
88d300522c
@ -4161,7 +4161,7 @@ static void get_file_access_info(struct smb2_query_info_rsp *rsp,
|
||||
static int get_file_basic_info(struct smb2_query_info_rsp *rsp,
|
||||
struct ksmbd_file *fp, void *rsp_org)
|
||||
{
|
||||
struct smb2_file_all_info *basic_info;
|
||||
struct smb2_file_basic_info *basic_info;
|
||||
struct kstat stat;
|
||||
u64 time;
|
||||
|
||||
@ -4171,7 +4171,7 @@ static int get_file_basic_info(struct smb2_query_info_rsp *rsp,
|
||||
return -EACCES;
|
||||
}
|
||||
|
||||
basic_info = (struct smb2_file_all_info *)rsp->Buffer;
|
||||
basic_info = (struct smb2_file_basic_info *)rsp->Buffer;
|
||||
generic_fillattr(file_mnt_user_ns(fp->filp), file_inode(fp->filp),
|
||||
&stat);
|
||||
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,
|
||||
basic_info->Attributes = fp->f_ci->m_fattr;
|
||||
basic_info->Pad1 = 0;
|
||||
rsp->OutputBufferLength =
|
||||
cpu_to_le32(offsetof(struct smb2_file_all_info, AllocationSize));
|
||||
inc_rfc1001_len(rsp_org, offsetof(struct smb2_file_all_info,
|
||||
AllocationSize));
|
||||
cpu_to_le32(sizeof(struct smb2_file_basic_info));
|
||||
inc_rfc1001_len(rsp_org, sizeof(struct smb2_file_basic_info));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -5412,7 +5411,7 @@ out:
|
||||
static int set_file_basic_info(struct ksmbd_file *fp, char *buf,
|
||||
struct ksmbd_share_config *share)
|
||||
{
|
||||
struct smb2_file_all_info *file_info;
|
||||
struct smb2_file_basic_info *file_info;
|
||||
struct iattr attrs;
|
||||
struct timespec64 ctime;
|
||||
struct file *filp;
|
||||
@ -5423,7 +5422,7 @@ static int set_file_basic_info(struct ksmbd_file *fp, char *buf,
|
||||
if (!(fp->daccess & FILE_WRITE_ATTRIBUTES_LE))
|
||||
return -EACCES;
|
||||
|
||||
file_info = (struct smb2_file_all_info *)buf;
|
||||
file_info = (struct smb2_file_basic_info *)buf;
|
||||
attrs.ia_valid = 0;
|
||||
filp = fp->filp;
|
||||
inode = file_inode(filp);
|
||||
|
@ -1464,6 +1464,15 @@ struct smb2_file_all_info { /* data block encoding of response to level 18 */
|
||||
char FileName[1];
|
||||
} __packed; /* level 18 Query */
|
||||
|
||||
struct smb2_file_basic_info { /* data block encoding of response to level 18 */
|
||||
__le64 CreationTime; /* Beginning of FILE_BASIC_INFO equivalent */
|
||||
__le64 LastAccessTime;
|
||||
__le64 LastWriteTime;
|
||||
__le64 ChangeTime;
|
||||
__le32 Attributes;
|
||||
__u32 Pad1; /* End of FILE_BASIC_INFO_INFO equivalent */
|
||||
} __packed;
|
||||
|
||||
struct smb2_file_alt_name_info {
|
||||
__le32 FileNameLength;
|
||||
char FileName[0];
|
||||
|
Loading…
Reference in New Issue
Block a user