mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
smb: move create_durable_reconn to common/smb2pdu.h
The fields in struct create_durable_reconn_req and struct create_durable
are exactly the same, so remove create_durable_reconn_req from server,
and use typedef to define both create_durable_req_t and
create_durable_reconn_t for a single struct.
Rename the following places:
- struct create_durable -> create_durable_req_t
- struct create_durable_reconn_req -> create_durable_reconn_t
The documentation references are:
- SMB2_CREATE_DURABLE_HANDLE_REQUEST in MS-SMB2 2.2.13.2.3
- SMB2_CREATE_DURABLE_HANDLE_RECONNECT in MS-SMB2 2.2.13.2.4
- SMB2_FILEID in MS-SMB2 2.2.14.1
Descriptions of the struct fields:
- __u8 Reserved[16]: DurableRequest field of SMB2_CREATE_DURABLE_HANDLE_REQUEST.
A 16-byte field that MUST be reserved.
- __u64 PersistentFileId: Persistent field of 2.2.14.1 SMB2_FILEID
- __u64 VolatileFileId: Volatile field of 2.2.14.1 SMB2_FILEID
- struct Fid: Data field of SMB2_CREATE_DURABLE_HANDLE_RECONNECT.
An SMB2_FILEID structure, as specified in section 2.2.14.1.
Suggested-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
e7e60e8bfc
commit
5003ad718a
|
|
@ -2229,21 +2229,20 @@ SMB2_tdis(const unsigned int xid, struct cifs_tcon *tcon)
|
|||
return rc;
|
||||
}
|
||||
|
||||
|
||||
static struct create_durable *
|
||||
static create_durable_req_t *
|
||||
create_durable_buf(void)
|
||||
{
|
||||
struct create_durable *buf;
|
||||
create_durable_req_t *buf;
|
||||
|
||||
buf = kzalloc(sizeof(struct create_durable), GFP_KERNEL);
|
||||
buf = kzalloc(sizeof(create_durable_req_t), GFP_KERNEL);
|
||||
if (!buf)
|
||||
return NULL;
|
||||
|
||||
buf->ccontext.DataOffset = cpu_to_le16(offsetof
|
||||
(struct create_durable, Data));
|
||||
(create_durable_req_t, Data));
|
||||
buf->ccontext.DataLength = cpu_to_le32(16);
|
||||
buf->ccontext.NameOffset = cpu_to_le16(offsetof
|
||||
(struct create_durable, Name));
|
||||
(create_durable_req_t, Name));
|
||||
buf->ccontext.NameLength = cpu_to_le16(4);
|
||||
/* SMB2_CREATE_DURABLE_HANDLE_REQUEST is "DHnQ" */
|
||||
buf->Name[0] = 'D';
|
||||
|
|
@ -2253,20 +2252,20 @@ create_durable_buf(void)
|
|||
return buf;
|
||||
}
|
||||
|
||||
static struct create_durable *
|
||||
static create_durable_req_t *
|
||||
create_reconnect_durable_buf(struct cifs_fid *fid)
|
||||
{
|
||||
struct create_durable *buf;
|
||||
create_durable_req_t *buf;
|
||||
|
||||
buf = kzalloc(sizeof(struct create_durable), GFP_KERNEL);
|
||||
buf = kzalloc(sizeof(create_durable_req_t), GFP_KERNEL);
|
||||
if (!buf)
|
||||
return NULL;
|
||||
|
||||
buf->ccontext.DataOffset = cpu_to_le16(offsetof
|
||||
(struct create_durable, Data));
|
||||
(create_durable_req_t, Data));
|
||||
buf->ccontext.DataLength = cpu_to_le32(16);
|
||||
buf->ccontext.NameOffset = cpu_to_le16(offsetof
|
||||
(struct create_durable, Name));
|
||||
(create_durable_req_t, Name));
|
||||
buf->ccontext.NameLength = cpu_to_le16(4);
|
||||
buf->Data.Fid.PersistentFileId = fid->persistent_fid;
|
||||
buf->Data.Fid.VolatileFileId = fid->volatile_fid;
|
||||
|
|
@ -2552,7 +2551,7 @@ add_durable_context(struct kvec *iov, unsigned int *num_iovec,
|
|||
iov[num].iov_base = create_durable_buf();
|
||||
if (iov[num].iov_base == NULL)
|
||||
return -ENOMEM;
|
||||
iov[num].iov_len = sizeof(struct create_durable);
|
||||
iov[num].iov_len = sizeof(create_durable_req_t);
|
||||
*num_iovec = num + 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1265,7 +1265,7 @@ struct create_posix {
|
|||
} __packed;
|
||||
|
||||
/* See MS-SMB2 2.2.13.2.3 and MS-SMB2 2.2.13.2.4 */
|
||||
struct create_durable {
|
||||
typedef struct {
|
||||
struct create_context_hdr ccontext;
|
||||
__u8 Name[8];
|
||||
union {
|
||||
|
|
@ -1275,7 +1275,7 @@ struct create_durable {
|
|||
__u64 VolatileFileId;
|
||||
} Fid;
|
||||
} Data;
|
||||
} __packed;
|
||||
} __packed create_durable_req_t, create_durable_reconn_t;
|
||||
|
||||
/* See MS-SMB2 2.2.13.2.5 */
|
||||
struct create_mxac_req {
|
||||
|
|
|
|||
|
|
@ -2756,7 +2756,7 @@ static int parse_durable_handle_context(struct ksmbd_work *work,
|
|||
}
|
||||
case DURABLE_RECONN:
|
||||
{
|
||||
struct create_durable_reconn_req *recon;
|
||||
create_durable_reconn_t *recon;
|
||||
|
||||
if (dh_info->type == DURABLE_RECONN_V2 ||
|
||||
dh_info->type == DURABLE_REQ_V2) {
|
||||
|
|
@ -2766,12 +2766,12 @@ static int parse_durable_handle_context(struct ksmbd_work *work,
|
|||
|
||||
if (le16_to_cpu(context->DataOffset) +
|
||||
le32_to_cpu(context->DataLength) <
|
||||
sizeof(struct create_durable_reconn_req)) {
|
||||
sizeof(create_durable_reconn_t)) {
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
recon = (struct create_durable_reconn_req *)context;
|
||||
recon = (create_durable_reconn_t *)context;
|
||||
persistent_id = recon->Data.Fid.PersistentFileId;
|
||||
dh_info->fp = ksmbd_lookup_durable_fd(persistent_id);
|
||||
if (!dh_info->fp) {
|
||||
|
|
|
|||
|
|
@ -68,18 +68,6 @@ struct preauth_integrity_info {
|
|||
|
||||
#define DURABLE_HANDLE_MAX_TIMEOUT 300000
|
||||
|
||||
struct create_durable_reconn_req {
|
||||
struct create_context_hdr ccontext;
|
||||
__u8 Name[8];
|
||||
union {
|
||||
__u8 Reserved[16];
|
||||
struct {
|
||||
__u64 PersistentFileId;
|
||||
__u64 VolatileFileId;
|
||||
} Fid;
|
||||
} Data;
|
||||
} __packed;
|
||||
|
||||
struct create_alloc_size_req {
|
||||
struct create_context_hdr ccontext;
|
||||
__u8 Name[8];
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user