Commit 81a45de4 authored by ChenXiaoSong's avatar ChenXiaoSong Committed by Steve French
Browse files

smb: move create_durable_handle_reconnect_v2 to common/smb2pdu.h



Modify the following places:

  - some fields in "struct create_durable_reconn_v2_req" ->
                        struct durable_reconnect_context_v2
  - create_durable_reconn_v2_req -> create_durable_handle_reconnect_v2

Then move duplicate definitions to common header file.

Signed-off-by: default avatarChenXiaoSong <chenxiaosong@kylinos.cn>
Acked-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 833a75fc
Loading
Loading
Loading
Loading
+0 −17
Original line number Diff line number Diff line
@@ -138,29 +138,12 @@ struct share_redirect_error_context_rsp {
/* Flags */
#define SMB2_DHANDLE_FLAG_PERSISTENT	0x00000002

/* See MS-SMB2 2.2.13.2.12 */
struct durable_reconnect_context_v2 {
	struct {
		__u64 PersistentFileId;
		__u64 VolatileFileId;
	} Fid;
	__u8 CreateGuid[16];
	__le32 Flags; /* see above DHANDLE_FLAG_PERSISTENT */
} __packed;

/* See MS-SMB2 2.2.14.2.12 */
struct durable_reconnect_context_v2_rsp {
	__le32 Timeout;
	__le32 Flags; /* see above DHANDLE_FLAG_PERSISTENT */
} __packed;

struct create_durable_handle_reconnect_v2 {
	struct create_context_hdr ccontext;
	__u8   Name[8];
	struct durable_reconnect_context_v2 dcontext;
	__u8   Pad[4];
} __packed;

/* See MS-SMB2 2.2.13.2.5 */
struct crt_twarp_ctxt {
	struct create_context_hdr ccontext;
+16 −0
Original line number Diff line number Diff line
@@ -1304,6 +1304,22 @@ struct create_durable_req_v2 {
	struct durable_context_v2_req dcontext;
} __packed;

/* See MS-SMB2 2.2.13.2.12 */
struct durable_reconnect_context_v2 {
	struct {
		__u64 PersistentFileId;
		__u64 VolatileFileId;
	} Fid;
	__u8 CreateGuid[16];
	__le32 Flags; /* see SMB2_DHANDLE_FLAG_PERSISTENT */
} __packed;

struct create_durable_handle_reconnect_v2 {
	struct create_context_hdr ccontext;
	__u8   Name[8];
	struct durable_reconnect_context_v2 dcontext;
} __packed;

/* See MS-SMB2 2.2.14.2.5 */
struct create_mxac_rsp {
	struct create_context_hdr ccontext;
+5 −5
Original line number Diff line number Diff line
@@ -2716,7 +2716,7 @@ static int parse_durable_handle_context(struct ksmbd_work *work,
		switch (dh_idx) {
		case DURABLE_RECONN_V2:
		{
			struct create_durable_reconn_v2_req *recon_v2;
			struct create_durable_handle_reconnect_v2 *recon_v2;

			if (dh_info->type == DURABLE_RECONN ||
			    dh_info->type == DURABLE_REQ_V2) {
@@ -2726,13 +2726,13 @@ 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_v2_req)) {
			    sizeof(struct create_durable_handle_reconnect_v2)) {
				err = -EINVAL;
				goto out;
			}

			recon_v2 = (struct create_durable_reconn_v2_req *)context;
			persistent_id = recon_v2->Fid.PersistentFileId;
			recon_v2 = (struct create_durable_handle_reconnect_v2 *)context;
			persistent_id = recon_v2->dcontext.Fid.PersistentFileId;
			dh_info->fp = ksmbd_lookup_durable_fd(persistent_id);
			if (!dh_info->fp) {
				ksmbd_debug(SMB, "Failed to get durable handle state\n");
@@ -2740,7 +2740,7 @@ static int parse_durable_handle_context(struct ksmbd_work *work,
				goto out;
			}

			if (memcmp(dh_info->fp->create_guid, recon_v2->CreateGuid,
			if (memcmp(dh_info->fp->create_guid, recon_v2->dcontext.CreateGuid,
				   SMB2_CREATE_GUID_SIZE)) {
				err = -EBADF;
				ksmbd_put_durable_fd(dh_info->fp);
+0 −11
Original line number Diff line number Diff line
@@ -80,17 +80,6 @@ struct create_durable_reconn_req {
	} Data;
} __packed;

struct create_durable_reconn_v2_req {
	struct create_context_hdr ccontext;
	__u8   Name[8];
	struct {
		__u64 PersistentFileId;
		__u64 VolatileFileId;
	} Fid;
	__u8 CreateGuid[16];
	__le32 Flags;
} __packed;

struct create_alloc_size_req {
	struct create_context_hdr ccontext;
	__u8   Name[8];